perm filename DEMO.PSC[TEX,DEK] blob sn#839109 filedate 1987-04-28 generic text, type T, neo UTF8
{4:}{9:}{$C-,A+,D-,W+}{$C+,D:5,W+,Z:377777777777B}{:9}PROGRAM TEX;
LABEL{6:}1,9998,9999;{:6}CONST{11:}MEMMAX=3000;MEMMIN=1;BUFSIZE=500;
ERRORLINE=64;HALFERRORLIN=32;MAXPRINTLINE=72;STACKSIZE=200;MAXINOPEN=6;
FONTMAX=75;FONTMEMSIZE=20000;PARAMSIZE=60;NESTSIZE=40;MAXSTRINGS=3000;
STRINGVACANC=8000;POOLSIZE=32000;SAVESIZE=600;TRIESIZE=8000;
DVIBUFSIZE=800;FILENAMESIZE=23;POOLNAME='TEX.POOL[TEX,DEK]      ';{:11}
TYPE{18:}ASCIICODE=0..127;{:18}{25:}EIGHTBITS=0..255;
ALPHAFILE=PACKED FILE OF CHAR;BYTEFILE=PACKED FILE OF EIGHTBITS;{:25}
{38:}POOLPOINTER=0..POOLSIZE;STRNUMBER=0..MAXSTRINGS;{:38}{101:}
SCALED=INTEGER;NONNEGATIVEI=0..2147483647;SMALLNUMBER=0..63;{:101}{109:}
GLUERATIO=REAL;{:109}{113:}QUARTERWORD=0..255;HALFWORD=0..32768;
TWOCHOICES=1..2;FOURCHOICES=1..4;TWOHALVES=PACKED RECORD RH:HALFWORD;
CASE TWOCHOICES OF 1:(LH:HALFWORD);2:(B0:QUARTERWORD;B1:QUARTERWORD);
END;FOURQUARTERS=PACKED RECORD B0:QUARTERWORD;B1:QUARTERWORD;
B2:QUARTERWORD;B3:QUARTERWORD;END;
MEMORYWORD=RECORD CASE FOURCHOICES OF 1:(INT:INTEGER);2:(GR:GLUERATIO);
3:(HH:TWOHALVES);4:(QQQQ:FOURQUARTERS);END;WORDFILE=FILE OF MEMORYWORD;
{:113}{150:}GLUEORD=0..3;{:150}{212:}
LISTSTATEREC=RECORD MODEFIELD:-201..201;HEADFIELD,TAILFIELD:HALFWORD;
PGFIELD,AUXFIELD,MLFIELD:INTEGER;END;{:212}{269:}GROUPCODE=0..16;{:269}
{300:}INSTATERECOR=RECORD STATEFIELD,INDEXFIELD:QUARTERWORD;
STARTFIELD,LOCFIELD,LIMITFIELD,NAMEFIELD:HALFWORD;END;{:300}{548:}
INTERNALFONT=0..FONTMAX;{:548}{594:}DVIINDEX=0..DVIBUFSIZE;
PACKEDBYTES=PACKED ARRAY[DVIINDEX]OF EIGHTBITS;{:594}{920:}
TRIEPOINTER=0..TRIESIZE;{:920}{925:}HYPHPOINTER=0..307;{:925}VAR{13:}
BAD:INTEGER;{:13}{20:}XORD:ARRAY[CHAR]OF ASCIICODE;
XCHR:ARRAY[ASCIICODE]OF CHAR;{:20}{26:}
NAMEOFFILE:PACKED ARRAY[1..FILENAMESIZE]OF CHAR;
NAMELENGTH:0..FILENAMESIZE;{:26}{30:}
BUFFER:ARRAY[0..BUFSIZE]OF ASCIICODE;FIRST:0..BUFSIZE;LAST:0..BUFSIZE;
MAXBUFSTACK:0..BUFSIZE;AUXBUF:ARRAY[0..70]OF CHAR;{:30}{39:}
STRPOOL:PACKED ARRAY[POOLPOINTER]OF ASCIICODE;
STRSTART:ARRAY[STRNUMBER]OF POOLPOINTER;POOLPTR:POOLPOINTER;
STRPTR:STRNUMBER;INITPOOLPTR:POOLPOINTER;INITSTRPTR:STRNUMBER;{:39}{50:}
POOLFILE:ALPHAFILE;{:50}{54:}LOGFILE:ALPHAFILE;SELECTOR:0..21;
DIG:ARRAY[0..22]OF 0..15;TALLY:INTEGER;TERMOFFSET:0..MAXPRINTLINE;
FILEOFFSET:0..MAXPRINTLINE;TRICKBUF:ARRAY[0..ERRORLINE]OF ASCIICODE;
TRICKCOUNT:INTEGER;FIRSTCOUNT:INTEGER;{:54}{73:}INTERACTION:0..3;{:73}
{76:}DELETIONSALL:BOOLEAN;HISTORY:0..3;ERRORCOUNT:-1..100;{:76}{79:}
HELPLINE:ARRAY[0..5]OF STRNUMBER;HELPPTR:0..6;USEERRHELP:BOOLEAN;{:79}
{96:}INTERRUPT:INTEGER;OKTOINTERRUP:BOOLEAN;{:96}{104:}
ARITHERROR:BOOLEAN;REMAINDER:SCALED;{:104}{115:}TEMPPTR:HALFWORD;{:115}
{116:}LOMEMMAX:HALFWORD;HIMEMMIN:HALFWORD;{:116}{117:}
VARUSED,DYNUSED:INTEGER;{:117}{118:}AVAIL:HALFWORD;MEMEND:HALFWORD;
{:118}{124:}ROVER:HALFWORD;{:124}{165:}
FREE:PACKED ARRAY[MEMMIN..MEMMAX]OF BOOLEAN;
WASFREE:PACKED ARRAY[MEMMIN..MEMMAX]OF BOOLEAN;
WASMEMEND,WASLOMAX,WASHIMIN:HALFWORD;PANICKING:BOOLEAN;{:165}{173:}
FONTINSHORTD:INTEGER;{:173}{181:}DEPTHTHRESHO:INTEGER;
BREADTHMAX:INTEGER;{:181}{213:}NEST:ARRAY[0..NESTSIZE]OF LISTSTATEREC;
NESTPTR:0..NESTSIZE;MAXNESTSTACK:0..NESTSIZE;CURLIST:LISTSTATEREC;
SHOWNMODE:-201..201;{:213}{246:}OLDSETTING:0..21;{:246}{253:}
EQTB:ARRAY[1..5076]OF MEMORYWORD;
XEQLEVEL:ARRAY[4367..5076]OF QUARTERWORD;{:253}{256:}
HASH:ARRAY[258..2624]OF TWOHALVES;HASHUSED:HALFWORD;
NONEWCONTROL:BOOLEAN;CSCOUNT:INTEGER;{:256}{271:}
SAVESTACK:ARRAY[0..SAVESIZE]OF MEMORYWORD;SAVEPTR:0..SAVESIZE;
MAXSAVESTACK:0..SAVESIZE;CURLEVEL:QUARTERWORD;CURGROUP:GROUPCODE;
CURBOUNDARY:0..SAVESIZE;{:271}{286:}MAGSET:INTEGER;{:286}{297:}
CURCMD:EIGHTBITS;CURCHR:HALFWORD;CURCS:HALFWORD;CURTOK:HALFWORD;{:297}
{301:}INPUTSTACK:ARRAY[0..STACKSIZE]OF INSTATERECOR;
INPUTPTR:0..STACKSIZE;MAXINSTACK:0..STACKSIZE;CURINPUT:INSTATERECOR;
{:301}{304:}INOPEN:0..MAXINOPEN;
INPUTFILE:ARRAY[1..MAXINOPEN]OF ALPHAFILE;LINE:INTEGER;
LINESTACK:ARRAY[1..MAXINOPEN]OF INTEGER;PAGE:INTEGER;
PAGESTACK:ARRAY[1..MAXINOPEN]OF INTEGER;{:304}{305:}SCANNERSTATU:0..5;
WARNINGINDEX:HALFWORD;DEFREF:HALFWORD;{:305}{308:}
PARAMSTACK:ARRAY[0..PARAMSIZE]OF HALFWORD;PARAMPTR:0..PARAMSIZE;
MAXPARAMSTAC:INTEGER;{:308}{309:}ALIGNSTATE:INTEGER;{:309}{310:}
BASEPTR:0..STACKSIZE;{:310}{333:}PARLOC:HALFWORD;PARTOKEN:HALFWORD;
{:333}{361:}FORCEEOF:BOOLEAN;{:361}{382:}CURMARK:ARRAY[0..4]OF HALFWORD;
{:382}{387:}LONGSTATE:110..113;{:387}{388:}
PSTACK:ARRAY[0..8]OF HALFWORD;{:388}{410:}CURVAL:INTEGER;
CURVALLEVEL:0..5;{:410}{438:}RADIX:SMALLNUMBER;{:438}{447:}
CURORDER:GLUEORD;{:447}{480:}READFILE:ARRAY[0..15]OF ALPHAFILE;
READOPEN:ARRAY[0..16]OF 0..2;{:480}{489:}CONDPTR:HALFWORD;IFLIMIT:0..4;
CURIF:SMALLNUMBER;IFLINE:INTEGER;{:489}{493:}SKIPLINE,SKIPPAGE:INTEGER;
{:493}{512:}CURNAME:STRNUMBER;CURAREA:STRNUMBER;CUREXT:STRNUMBER;{:512}
{513:}AREADELIMITE:POOLPOINTER;EXTDELIMITER:POOLPOINTER;{:513}{520:}
TEXFORMATDEF:PACKED ARRAY[1..18]OF CHAR;{:520}{527:}
NAMEINPROGRE:BOOLEAN;JOBNAME:STRNUMBER;{:527}{532:}DVIFILE:BYTEFILE;
OUTPUTFILENA:STRNUMBER;LOGNAME:STRNUMBER;{:532}{539:}TFMFILE:BYTEFILE;
{:539}{549:}FONTINFO:ARRAY[0..FONTMEMSIZE]OF MEMORYWORD;
FMEMPTR:0..FONTMEMSIZE;FONTPTR:INTERNALFONT;
FONTCHECK:ARRAY[INTERNALFONT]OF FOURQUARTERS;
FONTSIZE:ARRAY[INTERNALFONT]OF SCALED;
FONTDSIZE:ARRAY[INTERNALFONT]OF SCALED;
FONTPARAMS:ARRAY[INTERNALFONT]OF HALFWORD;
FONTNAME:ARRAY[INTERNALFONT]OF STRNUMBER;
FONTAREA:ARRAY[INTERNALFONT]OF STRNUMBER;
FONTBC:ARRAY[INTERNALFONT]OF EIGHTBITS;
FONTEC:ARRAY[INTERNALFONT]OF EIGHTBITS;
FONTGLUE:ARRAY[INTERNALFONT]OF HALFWORD;
FONTUSED:ARRAY[INTERNALFONT]OF BOOLEAN;
HYPHENCHAR:ARRAY[INTERNALFONT]OF INTEGER;
SKEWCHAR:ARRAY[INTERNALFONT]OF INTEGER;{:549}{550:}
CHARBASE:ARRAY[INTERNALFONT]OF INTEGER;
WIDTHBASE:ARRAY[INTERNALFONT]OF INTEGER;
HEIGHTBASE:ARRAY[INTERNALFONT]OF INTEGER;
DEPTHBASE:ARRAY[INTERNALFONT]OF INTEGER;
ITALICBASE:ARRAY[INTERNALFONT]OF INTEGER;
LIGKERNBASE:ARRAY[INTERNALFONT]OF INTEGER;
KERNBASE:ARRAY[INTERNALFONT]OF INTEGER;
EXTENBASE:ARRAY[INTERNALFONT]OF INTEGER;
PARAMBASE:ARRAY[INTERNALFONT]OF INTEGER;{:550}{555:}
NULLCHARACTE:FOURQUARTERS;{:555}{592:}TOTALPAGES:INTEGER;MAXV:SCALED;
MAXH:SCALED;MAXPUSH:INTEGER;LASTBOP:INTEGER;DEADCYCLES:INTEGER;
DOINGLEADERS:BOOLEAN;C,F:QUARTERWORD;RULEHT,RULEDP,RULEWD:SCALED;
G:HALFWORD;LQ,LR:INTEGER;{:592}{595:}DVIBUF:PACKEDBYTES;
HALFBUF:DVIINDEX;DVILIMIT:DVIINDEX;DVIPTR:DVIINDEX;DVIOFFSET:INTEGER;
DVIGONE:INTEGER;{:595}{605:}DOWNPTR,RIGHTPTR:HALFWORD;{:605}{616:}
DVIH,DVIV:SCALED;CURH,CURV:SCALED;DVIF:INTERNALFONT;CURS:INTEGER;{:616}
{646:}TOTALSTRETCH,TOTALSHRINK:ARRAY[GLUEORD]OF SCALED;{:646}{647:}
ADJUSTTAIL:HALFWORD;{:647}{661:}PACKBEGINLIN:INTEGER;{:661}{684:}
EMPTYFIELD:TWOHALVES;NULLDELIMITE:FOURQUARTERS;{:684}{719:}
CURMLIST:HALFWORD;CURSTYLE:SMALLNUMBER;CURSIZE:SMALLNUMBER;CURMU:SCALED;
MLISTPENALTI:BOOLEAN;{:719}{724:}CURF:INTERNALFONT;CURC:QUARTERWORD;
CURI:FOURQUARTERS;{:724}{764:}MAGICOFFSET:INTEGER;{:764}{770:}
CURALIGN:HALFWORD;CURSPAN:HALFWORD;CURLOOP:HALFWORD;ALIGNPTR:HALFWORD;
CURHEAD,CURTAIL:HALFWORD;{:770}{814:}JUSTBOX:HALFWORD;{:814}{821:}
PASSIVE:HALFWORD;PRINTEDNODE:HALFWORD;PASSNUMBER:HALFWORD;{:821}{823:}
ACTIVEWIDTH:ARRAY[1..6]OF SCALED;CURACTIVEWID:ARRAY[1..6]OF SCALED;
BACKGROUND:ARRAY[1..6]OF SCALED;BREAKWIDTH:ARRAY[1..6]OF SCALED;{:823}
{825:}NOSHRINKERRO:BOOLEAN;{:825}{828:}CURP:HALFWORD;SECONDPASS:BOOLEAN;
THRESHOLD:INTEGER;{:828}{833:}MINIMALDEMER:ARRAY[0..3]OF SCALED;
MINIMUMDEMER:SCALED;BESTPLACE:ARRAY[0..3]OF HALFWORD;
BESTPLLINE:ARRAY[0..3]OF HALFWORD;{:833}{839:}DISCWIDTH:SCALED;{:839}
{847:}EASYLINE:HALFWORD;LASTSPECIALL:HALFWORD;FIRSTWIDTH:SCALED;
SECONDWIDTH:SCALED;FIRSTINDENT:SCALED;SECONDINDENT:SCALED;{:847}{872:}
BESTBET:HALFWORD;FEWESTDEMERI:INTEGER;BESTLINE:HALFWORD;
ACTUALLOOSEN:INTEGER;LINEDIFF:INTEGER;{:872}{892:}
HC:ARRAY[0..65]OF HALFWORD;HN:SMALLNUMBER;HA,HB:HALFWORD;
HF:INTERNALFONT;HU:ARRAY[1..63]OF ASCIICODE;HYFCHAR:INTEGER;{:892}{900:}
HYF:ARRAY[0..64]OF 0..9;{:900}{905:}HYPHENPASSED:SMALLNUMBER;{:905}
{921:}TRIE:ARRAY[TRIEPOINTER]OF TWOHALVES;
HYFDISTANCE:ARRAY[QUARTERWORD]OF SMALLNUMBER;
HYFNUM:ARRAY[QUARTERWORD]OF SMALLNUMBER;
HYFNEXT:ARRAY[QUARTERWORD]OF QUARTERWORD;{:921}{926:}
HYPHWORD:ARRAY[HYPHPOINTER]OF STRNUMBER;
HYPHLIST:ARRAY[HYPHPOINTER]OF HALFWORD;HYPHCOUNT:HYPHPOINTER;{:926}
{943:}TRIEOPHASH:ARRAY[0..510]OF QUARTERWORD;TRIEOPPTR:QUARTERWORD;
{:943}{945:}TRIEC:PACKED ARRAY[TRIEPOINTER]OF ASCIICODE;
TRIEO:PACKED ARRAY[TRIEPOINTER]OF QUARTERWORD;
TRIEL:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;
TRIER:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;TRIEPTR:TRIEPOINTER;{:945}
{946:}TRIEHASH:PACKED ARRAY[TRIEPOINTER]OF TRIEPOINTER;{:946}{950:}
TRIETAKEN:PACKED ARRAY[TRIEPOINTER]OF BOOLEAN;TRIEMIN:TRIEPOINTER;
TRIEMAX:TRIEPOINTER;{:950}{971:}BESTHEIGHTPL:SCALED;{:971}{980:}
PAGETAIL:HALFWORD;PAGECONTENTS:0..2;PAGEMAXDEPTH:SCALED;
BESTPAGEBREA:HALFWORD;LEASTPAGECOS:INTEGER;BESTSIZE:SCALED;{:980}{982:}
PAGESOFAR:ARRAY[0..7]OF SCALED;LASTGLUE:HALFWORD;LASTPENALTY:INTEGER;
LASTKERN:SCALED;INSERTPENALT:INTEGER;{:982}{989:}OUTPUTACTIVE:BOOLEAN;
{:989}{1074:}CURBOX:HALFWORD;{:1074}{1266:}AFTERTOKEN:HALFWORD;{:1266}
{1281:}LONGHELPSEEN:BOOLEAN;{:1281}{1299:}FORMATIDENT:STRNUMBER;{:1299}
{1305:}FMTFILE:WORDFILE;{:1305}{1331:}READYALREADY:INTEGER;{:1331}
{1342:}WRITEFILE:ARRAY[0..15]OF ALPHAFILE;
WRITEOPEN:ARRAY[0..17]OF BOOLEAN;{:1342}{1345:}WRITELOC:HALFWORD;{:1345}
{1377:}PSEUDOTYPEIN:STRNUMBER;{:1377}{1379:}
MEM:ARRAY[MEMMIN..MEMMAX]OF MEMORYWORD;TRACEDEPTH:INTEGER;{:1379}
PROCEDURE INITIALIZE;VAR{19:}I:0..127;{:19}{163:}K:INTEGER;{:163}{927:}
Z:HYPHPOINTER;{:927}BEGIN{8:}{21:}XCHR[32]:=' ';XCHR[33]:='!';
XCHR[34]:='"';XCHR[35]:='#';XCHR[36]:='$';XCHR[37]:='%';XCHR[38]:='&';
XCHR[39]:='''';XCHR[40]:='(';XCHR[41]:=')';XCHR[42]:='*';XCHR[43]:='+';
XCHR[44]:=',';XCHR[45]:='-';XCHR[46]:='.';XCHR[47]:='/';XCHR[48]:='0';
XCHR[49]:='1';XCHR[50]:='2';XCHR[51]:='3';XCHR[52]:='4';XCHR[53]:='5';
XCHR[54]:='6';XCHR[55]:='7';XCHR[56]:='8';XCHR[57]:='9';XCHR[58]:=':';
XCHR[59]:=';';XCHR[60]:='<';XCHR[61]:='=';XCHR[62]:='>';XCHR[63]:='?';
XCHR[64]:='@';XCHR[65]:='A';XCHR[66]:='B';XCHR[67]:='C';XCHR[68]:='D';
XCHR[69]:='E';XCHR[70]:='F';XCHR[71]:='G';XCHR[72]:='H';XCHR[73]:='I';
XCHR[74]:='J';XCHR[75]:='K';XCHR[76]:='L';XCHR[77]:='M';XCHR[78]:='N';
XCHR[79]:='O';XCHR[80]:='P';XCHR[81]:='Q';XCHR[82]:='R';XCHR[83]:='S';
XCHR[84]:='T';XCHR[85]:='U';XCHR[86]:='V';XCHR[87]:='W';XCHR[88]:='X';
XCHR[89]:='Y';XCHR[90]:='Z';XCHR[91]:='[';XCHR[92]:='\';XCHR[93]:=']';
XCHR[94]:='↑';XCHR[95]:='_';XCHR[96]:='`';XCHR[97]:='a';XCHR[98]:='b';
XCHR[99]:='c';XCHR[100]:='d';XCHR[101]:='e';XCHR[102]:='f';
XCHR[103]:='g';XCHR[104]:='h';XCHR[105]:='i';XCHR[106]:='j';
XCHR[107]:='k';XCHR[108]:='l';XCHR[109]:='m';XCHR[110]:='n';
XCHR[111]:='o';XCHR[112]:='p';XCHR[113]:='q';XCHR[114]:='r';
XCHR[115]:='s';XCHR[116]:='t';XCHR[117]:='u';XCHR[118]:='v';
XCHR[119]:='w';XCHR[120]:='x';XCHR[121]:='y';XCHR[122]:='z';
XCHR[123]:='{';XCHR[124]:='|';XCHR[125]:='}';XCHR[126]:='~';
XCHR[0]:=' ';XCHR[127]:=' ';{:21}{23:}FOR I:=1 TO 31 DO XCHR[I]:=CHR(I);
XCHR[24]:=CHR(95);XCHR[26]:=CHR(27);XCHR[27]:=CHR(126);{:23}{24:}
FOR I:=0 TO 127 DO XORD[CHR(I)]:=127;
FOR I:=1 TO 126 DO XORD[XCHR[I]]:=I;{:24}{74:}INTERACTION:=3;{:74}{77:}
DELETIONSALL:=TRUE;ERRORCOUNT:=0;{:77}{80:}HELPPTR:=0;USEERRHELP:=FALSE;
{:80}{97:}INTERRUPT:=0;OKTOINTERRUP:=TRUE;{:97}{166:}WASMEMEND:=MEMMIN;
WASLOMAX:=MEMMIN;WASHIMIN:=MEMMAX;PANICKING:=FALSE;{:166}{215:}
NESTPTR:=0;MAXNESTSTACK:=0;CURLIST.MODEFIELD:=1;CURLIST.HEADFIELD:=2999;
CURLIST.TAILFIELD:=2999;CURLIST.AUXFIELD:=-65536000;CURLIST.MLFIELD:=0;
CURLIST.PGFIELD:=0;SHOWNMODE:=0;{991:}PAGECONTENTS:=0;PAGETAIL:=2998;
MEM[2998].HH.RH:=0;LASTGLUE:=32768;LASTPENALTY:=0;LASTKERN:=0;
PAGESOFAR[7]:=0;PAGEMAXDEPTH:=0{:991};{:215}{254:}
FOR K:=4367 TO 5076 DO XEQLEVEL[K]:=1;{:254}{257:}NONEWCONTROL:=TRUE;
HASH[258].LH:=0;HASH[258].RH:=0;
FOR K:=259 TO 2624 DO HASH[K]:=HASH[258];{:257}{272:}SAVEPTR:=0;
CURLEVEL:=1;CURGROUP:=0;CURBOUNDARY:=0;MAXSAVESTACK:=0;{:272}{287:}
MAGSET:=0;{:287}{383:}CURMARK[0]:=0;CURMARK[1]:=0;CURMARK[2]:=0;
CURMARK[3]:=0;CURMARK[4]:=0;{:383}{439:}CURVAL:=0;CURVALLEVEL:=0;
RADIX:=0;{:439}{481:}FOR K:=0 TO 16 DO READOPEN[K]:=2;{:481}{490:}
CONDPTR:=0;IFLIMIT:=0;CURIF:=0;IFLINE:=0;{:490}{521:}
TEXFORMATDEF:='plain.fmt[tex,sys]';{:521}{551:}
FOR K:=0 TO FONTMAX DO FONTUSED[K]:=FALSE;{:551}{556:}
NULLCHARACTE.B0:=0;NULLCHARACTE.B1:=0;NULLCHARACTE.B2:=0;
NULLCHARACTE.B3:=0;{:556}{593:}TOTALPAGES:=0;MAXV:=0;MAXH:=0;MAXPUSH:=0;
LASTBOP:=-1;DOINGLEADERS:=FALSE;DEADCYCLES:=0;{:593}{596:}
HALFBUF:=DVIBUFSIZE DIV 2;DVILIMIT:=DVIBUFSIZE;DVIPTR:=0;DVIOFFSET:=0;
DVIGONE:=0;{:596}{606:}DOWNPTR:=0;RIGHTPTR:=0;{:606}{648:}ADJUSTTAIL:=0;
{:648}{662:}PACKBEGINLIN:=0;{:662}{685:}EMPTYFIELD.RH:=0;
EMPTYFIELD.LH:=0;NULLDELIMITE.B0:=0;NULLDELIMITE.B1:=0;
NULLDELIMITE.B2:=0;NULLDELIMITE.B3:=0;{:685}{771:}ALIGNPTR:=0;
CURALIGN:=0;CURSPAN:=0;CURLOOP:=0;CURHEAD:=0;CURTAIL:=0;{:771}{928:}
FOR Z:=0 TO 307 DO BEGIN HYPHWORD[Z]:=0;HYPHLIST[Z]:=0;END;HYPHCOUNT:=0;
{:928}{990:}OUTPUTACTIVE:=FALSE;INSERTPENALT:=0;{:990}{1267:}
AFTERTOKEN:=0;{:1267}{1282:}LONGHELPSEEN:=FALSE;{:1282}{1300:}
FORMATIDENT:=0;{:1300}{1343:}FOR K:=0 TO 17 DO WRITEOPEN[K]:=FALSE;
{:1343}{1378:}PSEUDOTYPEIN:=0;PAGE:=0;{:1378}{1380:}TRACEDEPTH:=0;
{:1380}{164:}FOR K:=2 TO 20 DO MEM[K].INT:=0;K:=1;
WHILE K<=20 DO BEGIN MEM[K].HH.RH:=1;MEM[K].HH.B0:=0;MEM[K].HH.B1:=0;
K:=K+4;END;MEM[7].INT:=65536;MEM[5].HH.B0:=1;MEM[11].INT:=65536;
MEM[9].HH.B0:=2;MEM[15].INT:=65536;MEM[13].HH.B0:=1;MEM[16].INT:=65536;
MEM[13].HH.B1:=1;MEM[19].INT:=-65536;MEM[17].HH.B0:=1;ROVER:=21;
MEM[ROVER].HH.RH:=32768;MEM[ROVER].HH.LH:=1000;
MEM[ROVER+1].HH.LH:=ROVER;MEM[ROVER+1].HH.RH:=ROVER;
LOMEMMAX:=ROVER+1000;MEM[LOMEMMAX].HH.RH:=0;MEM[LOMEMMAX].HH.LH:=0;
FOR K:=2987 TO 3000 DO MEM[K]:=MEM[LOMEMMAX];{790:}
MEM[2990].HH.LH:=6459;{:790}{797:}MEM[2991].HH.RH:=256;
MEM[2991].HH.LH:=0;{:797}{820:}MEM[2993].HH.B0:=1;
MEM[2994].HH.LH:=32768;MEM[2993].HH.B1:=0;{:820}{981:}
MEM[3000].HH.B1:=255;MEM[3000].HH.B0:=1;MEM[3000].HH.RH:=3000;{:981}
{988:}MEM[2998].HH.B0:=10;MEM[2998].HH.B1:=0;{:988};AVAIL:=0;
MEMEND:=3000;HIMEMMIN:=2987;VARUSED:=20;DYNUSED:=14;{:164}{222:}
EQTB[2625].HH.B0:=100;EQTB[2625].HH.RH:=0;EQTB[2625].HH.B1:=0;
FOR K:=1 TO 2624 DO EQTB[K]:=EQTB[2625];{:222}{228:}EQTB[2626].HH.RH:=1;
EQTB[2626].HH.B1:=1;EQTB[2626].HH.B0:=116;
FOR K:=2627 TO 3155 DO EQTB[K]:=EQTB[2626];
MEM[1].HH.RH:=MEM[1].HH.RH+530;{:228}{232:}EQTB[3156].HH.RH:=0;
EQTB[3156].HH.B0:=117;EQTB[3156].HH.B1:=1;
FOR K:=3157 TO 3421 DO EQTB[K]:=EQTB[2625];EQTB[3422].HH.RH:=0;
EQTB[3422].HH.B0:=118;EQTB[3422].HH.B1:=1;
FOR K:=3423 TO 3677 DO EQTB[K]:=EQTB[3422];EQTB[3678].HH.RH:=0;
EQTB[3678].HH.B0:=119;EQTB[3678].HH.B1:=1;
FOR K:=3679 TO 3726 DO EQTB[K]:=EQTB[3678];EQTB[3727].HH.RH:=0;
EQTB[3727].HH.B0:=119;EQTB[3727].HH.B1:=1;
FOR K:=3728 TO 4366 DO EQTB[K]:=EQTB[3727];
FOR K:=0 TO 127 DO BEGIN EQTB[3727+K].HH.RH:=12;
EQTB[4239+K].HH.RH:=0+K+0;EQTB[4111+K].HH.RH:=1000;END;
EQTB[3740].HH.RH:=5;EQTB[3759].HH.RH:=10;EQTB[3819].HH.RH:=0;
EQTB[3764].HH.RH:=14;EQTB[3739].HH.RH:=5;EQTB[3854].HH.RH:=15;
EQTB[3727].HH.RH:=9;FOR K:=48 TO 57 DO EQTB[4239+K].HH.RH:=0+K+28672;
FOR K:=65 TO 90 DO BEGIN EQTB[3727+K].HH.RH:=11;
EQTB[3727+K+32].HH.RH:=11;EQTB[4239+K].HH.RH:=0+K+28928;
EQTB[4239+K+32].HH.RH:=0+K+28960;EQTB[3855+K].HH.RH:=K+32;
EQTB[3855+K+32].HH.RH:=K+32;EQTB[3983+K].HH.RH:=K;
EQTB[3983+K+32].HH.RH:=K;EQTB[4111+K].HH.RH:=999;END;{:232}{240:}
FOR K:=4367 TO 4672 DO EQTB[K].INT:=0;EQTB[4384].INT:=1000;
EQTB[4368].INT:=10000;EQTB[4408].INT:=1;EQTB[4407].INT:=25;
EQTB[4412].INT:=92;EQTB[4415].INT:=13;
FOR K:=0 TO 127 DO EQTB[4673+K].INT:=-1;EQTB[4719].INT:=0;{:240}{250:}
FOR K:=4801 TO 5076 DO EQTB[K].INT:=0;{:250}{258:}HASHUSED:=2358;
CSCOUNT:=0;EQTB[2367].HH.B0:=115;HASH[2367].RH:=365;{:258}{552:}
FONTPTR:=0;FMEMPTR:=7;FONTNAME[0]:=667;FONTAREA[0]:=210;
HYPHENCHAR[0]:=45;SKEWCHAR[0]:=-1;FONTBC[0]:=1;FONTEC[0]:=0;
FONTSIZE[0]:=0;FONTDSIZE[0]:=0;CHARBASE[0]:=0;WIDTHBASE[0]:=0;
HEIGHTBASE[0]:=0;DEPTHBASE[0]:=0;ITALICBASE[0]:=0;LIGKERNBASE[0]:=0;
KERNBASE[0]:=0;EXTENBASE[0]:=0;FONTGLUE[0]:=0;FONTPARAMS[0]:=7;
PARAMBASE[0]:=-1;FOR K:=0 TO 6 DO FONTINFO[K].INT:=0;{:552}{952:}
TRIEOPPTR:=0;TRIE[0].RH:=0;TRIE[0].B1:=0;TRIE[0].B0:=0;
FOR K:=1 TO 127 DO TRIE[K]:=TRIE[0];TRIEMAX:=127;{:952}{1216:}
HASH[2358].RH:=1051;{:1216}{1301:}FORMATIDENT:=1116;{:1301}{1369:}
HASH[2366].RH:=1151;EQTB[2366].HH.B1:=1;EQTB[2366].HH.B0:=112;
EQTB[2366].HH.RH:=0;{:1369}{:8}END;{57:}PROCEDURE PRINTLN;
BEGIN CASE SELECTOR OF 19:BEGIN WRITELN(TTY);WRITELN(LOGFILE);
TERMOFFSET:=0;FILEOFFSET:=0;END;18:BEGIN WRITELN(LOGFILE);FILEOFFSET:=0;
END;17:BEGIN WRITELN(TTY);TERMOFFSET:=0;END;16,20,21:;
OTHERS:WRITELN(WRITEFILE[SELECTOR])END;END;{:57}{58:}
PROCEDURE PRINTCHAR(S:ASCIICODE);LABEL 10;BEGIN IF{244:}
S=EQTB[4416].INT{:244}THEN IF SELECTOR<20 THEN BEGIN PRINTLN;GOTO 10;
END;CASE SELECTOR OF 19:BEGIN WRITE(TTY,XCHR[S]);WRITE(LOGFILE,XCHR[S]);
TERMOFFSET:=TERMOFFSET+1;FILEOFFSET:=FILEOFFSET+1;
IF TERMOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(TTY);TERMOFFSET:=0;END;
IF FILEOFFSET=MAXPRINTLINE THEN BEGIN WRITELN(LOGFILE);FILEOFFSET:=0;
END;END;18:BEGIN WRITE(LOGFILE,XCHR[S]);FILEOFFSET:=FILEOFFSET+1;
IF FILEOFFSET=MAXPRINTLINE THEN PRINTLN;END;17:BEGIN WRITE(TTY,XCHR[S]);
TERMOFFSET:=TERMOFFSET+1;IF TERMOFFSET=MAXPRINTLINE THEN PRINTLN;END;
16:;20:IF TALLY<TRICKCOUNT THEN TRICKBUF[TALLY MOD ERRORLINE]:=S;
21:BEGIN IF POOLPTR<POOLSIZE THEN BEGIN STRPOOL[POOLPTR]:=S;
POOLPTR:=POOLPTR+1;END;END;OTHERS:WRITE(WRITEFILE[SELECTOR],XCHR[S])END;
TALLY:=TALLY+1;10:END;{:58}{59:}PROCEDURE PRINT(S:INTEGER);LABEL 10;
VAR J:POOLPOINTER;
BEGIN IF S>=STRPTR THEN S:=131 ELSE IF S<128 THEN IF S<0 THEN S:=131
ELSE IF({244:}S=EQTB[4416].INT{:244}
)THEN IF SELECTOR<20 THEN BEGIN PRINTLN;GOTO 10;END;J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;10:END;
{:59}{60:}PROCEDURE SLOWPRINT(S:INTEGER);LABEL 10;VAR J:POOLPOINTER;
BEGIN IF S>=STRPTR THEN S:=131 ELSE IF S<128 THEN IF S<0 THEN S:=131
ELSE IF({244:}S=EQTB[4416].INT{:244}
)THEN IF SELECTOR<20 THEN BEGIN PRINTLN;GOTO 10;END;J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN PRINT(STRPOOL[J]);J:=J+1;END;10:END;{:60}
{62:}PROCEDURE PRINTNL(S:STRNUMBER);
BEGIN IF((TERMOFFSET>0)AND(ODD(SELECTOR)))OR((FILEOFFSET>0)AND(SELECTOR
>=18))THEN PRINTLN;PRINT(S);END;{:62}{63:}
PROCEDURE PRINTESC(S:STRNUMBER);VAR C:INTEGER;BEGIN{243:}
C:=EQTB[4412].INT{:243};IF C>=0 THEN IF C<128 THEN PRINT(C);PRINT(S);
END;{:63}{64:}PROCEDURE PRINTTHEDIGS(K:EIGHTBITS);
BEGIN WHILE K>0 DO BEGIN K:=K-1;
IF DIG[K]<10 THEN PRINTCHAR(48+DIG[K])ELSE PRINTCHAR(55+DIG[K]);END;END;
{:64}{65:}PROCEDURE PRINTINT(N:INTEGER);VAR K:0..23;M:INTEGER;
BEGIN K:=0;IF N<0 THEN BEGIN PRINTCHAR(45);
IF N>-100000000 THEN N:=-N ELSE BEGIN M:=-1-N;N:=M DIV 10;
M:=(M MOD 10)+1;K:=1;IF M<10 THEN DIG[0]:=M ELSE BEGIN DIG[0]:=0;N:=N+1;
END;END;END;REPEAT DIG[K]:=N MOD 10;N:=N DIV 10;K:=K+1;UNTIL N=0;
PRINTTHEDIGS(K);END;{:65}{262:}PROCEDURE PRINTCS(P:INTEGER);
BEGIN IF P<258 THEN IF P>=129 THEN IF P=257 THEN BEGIN PRINTESC(367);
PRINTESC(368);END ELSE BEGIN PRINTESC(P-129);
IF EQTB[3727+P-129].HH.RH=11 THEN PRINTCHAR(32);
END ELSE IF P<1 THEN PRINTESC(369)ELSE PRINT(P-1)ELSE IF P>=2625 THEN
PRINTESC(369)ELSE IF(HASH[P].RH<0)OR(HASH[P].RH>=STRPTR)THEN PRINTESC(
370)ELSE BEGIN PRINTESC(210);SLOWPRINT(HASH[P].RH);PRINTCHAR(32);END;
END;{:262}{263:}PROCEDURE SPRINTCS(P:HALFWORD);
BEGIN IF P<258 THEN IF P<129 THEN PRINT(P-1)ELSE IF P<257 THEN PRINTESC(
P-129)ELSE BEGIN PRINTESC(367);PRINTESC(368);
END ELSE BEGIN PRINTESC(210);SLOWPRINT(HASH[P].RH);END;END;{:263}{518:}
PROCEDURE PRINTFILENAM(N,A,E:INTEGER);BEGIN PRINT(N);PRINT(E);PRINT(A);
END;{:518}{699:}PROCEDURE PRINTSIZE(S:INTEGER);
BEGIN IF S=0 THEN PRINTESC(281)ELSE IF S=16 THEN PRINTESC(282)ELSE
PRINTESC(283);END;{:699}{1355:}PROCEDURE PRINTWRITEWH(S:STRNUMBER;
P:HALFWORD);BEGIN PRINTESC(S);
IF MEM[P+1].HH.LH<16 THEN PRINTINT(MEM[P+1].HH.LH)ELSE IF MEM[P+1].HH.LH
=16 THEN PRINTCHAR(42)ELSE PRINTCHAR(45);END;{:1355}{34:}
FUNCTION INSKP0:BOOLEAN;EXTERN;{:34}{78:}PROCEDURE NORMALIZESEL;FORWARD;
PROCEDURE GETTOKEN;FORWARD;PROCEDURE TERMINPUT;FORWARD;
PROCEDURE SHOWCONTEXT;FORWARD;PROCEDURE BEGINFILEREA;FORWARD;
PROCEDURE OPENLOGFILE;FORWARD;PROCEDURE CLOSEFILESAN;FORWARD;
PROCEDURE CLEARFORERRO;FORWARD;PROCEDURE GIVEERRHELP;FORWARD;
PROCEDURE DEBUGHELP;FORWARD;{:78}{81:}PROCEDURE JUMPOUT;BEGIN GOTO 9998;
END;{:81}{82:}PROCEDURE ERROR;LABEL 22,10;VAR C:ASCIICODE;
S1,S2,S3,S4:INTEGER;BEGIN IF HISTORY<2 THEN HISTORY:=2;PRINTCHAR(46);
SHOWCONTEXT;IF INTERACTION=3 THEN{83:}
WHILE TRUE DO BEGIN 22:CLEARFORERRO;BEGIN BEGIN IF INSKP0 THEN END;
PRINT(136);TERMINPUT;END;IF LAST=FIRST THEN GOTO 10;C:=BUFFER[FIRST];
IF C>=97 THEN C:=C-32;{84:}
CASE C OF 48,49,50,51,52,53,54,55,56,57:IF DELETIONSALL THEN{88:}
BEGIN S1:=CURTOK;S2:=CURCMD;S3:=CURCHR;S4:=ALIGNSTATE;
ALIGNSTATE:=1000000;OKTOINTERRUP:=FALSE;
IF(LAST>FIRST+1)AND(BUFFER[FIRST+1]>=48)AND(BUFFER[FIRST+1]<=57)THEN C:=
C*10+BUFFER[FIRST+1]-48*11 ELSE C:=C-48;WHILE C>0 DO BEGIN GETTOKEN;
C:=C-1;END;CURTOK:=S1;CURCMD:=S2;CURCHR:=S3;ALIGNSTATE:=S4;
OKTOINTERRUP:=TRUE;BEGIN HELPPTR:=2;HELPLINE[1]:=151;HELPLINE[0]:=152;
END;SHOWCONTEXT;GOTO 22;END{:88};68:BEGIN DEBUGHELP;GOTO 22;END;
69,84:IF BASEPTR>0 THEN BEGIN SELECTOR:=21;POOLPTR:=STRSTART[STRPTR];
PRINT(137);PRINT(INPUTSTACK[BASEPTR].NAMEFIELD);PRINTCHAR(47);
PRINTINT(PAGE);PRINT(138);PRINTINT(LINE);PRINTCHAR(108);PRINTCHAR(13);
IF STRPTR<MAXSTRINGS THEN BEGIN PSEUDOTYPEIN:=STRPTR;STRPTR:=STRPTR+1;
STRSTART[STRPTR]:=POOLPTR;END;SELECTOR:=19;INTERACTION:=2;JUMPOUT;END;
72:{89:}BEGIN IF USEERRHELP THEN BEGIN GIVEERRHELP;USEERRHELP:=FALSE;
END ELSE BEGIN IF HELPPTR=0 THEN BEGIN HELPPTR:=2;HELPLINE[1]:=153;
HELPLINE[0]:=154;END;REPEAT HELPPTR:=HELPPTR-1;PRINT(HELPLINE[HELPPTR]);
PRINTLN;UNTIL HELPPTR=0;END;BEGIN HELPPTR:=4;HELPLINE[3]:=155;
HELPLINE[2]:=154;HELPLINE[1]:=156;HELPLINE[0]:=157;END;GOTO 22;END{:89};
73:{87:}BEGIN BEGINFILEREA;
IF LAST>FIRST+1 THEN BEGIN CURINPUT.LOCFIELD:=FIRST+1;BUFFER[FIRST]:=32;
END ELSE BEGIN BEGIN BEGIN IF INSKP0 THEN END;PRINT(150);TERMINPUT;END;
CURINPUT.LOCFIELD:=FIRST;END;FIRST:=LAST;CURINPUT.LIMITFIELD:=LAST-1;
GOTO 10;END{:87};81,82,83:{86:}BEGIN ERRORCOUNT:=0;INTERACTION:=0+C-81;
PRINT(145);CASE C OF 81:BEGIN PRINTESC(146);SELECTOR:=SELECTOR-1;END;
82:PRINTESC(147);83:PRINTESC(148);END;PRINT(149);PRINTLN;BREAK(TTY);
GOTO 10;END{:86};88:BEGIN INTERACTION:=2;JUMPOUT;END;OTHERS:END;{85:}
BEGIN PRINT(139);PRINTNL(140);PRINTNL(141);IF BASEPTR>0 THEN PRINT(142);
IF DELETIONSALL THEN PRINTNL(143);PRINTNL(144);END{:85}{:84};END{:83};
ERRORCOUNT:=ERRORCOUNT+1;IF ERRORCOUNT=100 THEN BEGIN PRINTNL(135);
HISTORY:=3;JUMPOUT;END;{90:}IF INTERACTION>0 THEN SELECTOR:=SELECTOR-1;
IF USEERRHELP THEN BEGIN PRINTLN;GIVEERRHELP;
END ELSE WHILE HELPPTR>0 DO BEGIN HELPPTR:=HELPPTR-1;
PRINTNL(HELPLINE[HELPPTR]);END;PRINTLN;
IF INTERACTION>0 THEN SELECTOR:=SELECTOR+1;PRINTLN{:90};10:END;{:82}
{93:}PROCEDURE FATALERROR(S:STRNUMBER);BEGIN NORMALIZESEL;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(159);END;BEGIN HELPPTR:=1;HELPLINE[0]:=S;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
IF INTERACTION>0 THEN DEBUGHELP;HISTORY:=3;JUMPOUT;END;END;{:93}{94:}
PROCEDURE OVERFLOW(S:STRNUMBER;N:INTEGER);BEGIN NORMALIZESEL;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(160);END;PRINT(S);PRINTCHAR(61);PRINTINT(N);PRINTCHAR(93);
BEGIN HELPPTR:=2;HELPLINE[1]:=161;HELPLINE[0]:=162;END;
BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
IF INTERACTION>0 THEN DEBUGHELP;HISTORY:=3;JUMPOUT;END;END;{:94}{95:}
PROCEDURE CONFUSION(S:STRNUMBER);BEGIN NORMALIZESEL;
IF HISTORY<2 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(163);END;PRINT(S);PRINTCHAR(41);BEGIN HELPPTR:=1;
HELPLINE[0]:=164;END;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(165);END;BEGIN HELPPTR:=2;HELPLINE[1]:=166;
HELPLINE[0]:=167;END;END;BEGIN IF INTERACTION=3 THEN INTERACTION:=2;
ERROR;IF INTERACTION>0 THEN DEBUGHELP;HISTORY:=3;JUMPOUT;END;END;{:95}
{:4}{27:}FUNCTION ERSTAT(VAR F:FILE):INTEGER;EXTERN;
FUNCTION AOPENIN(VAR F:ALPHAFILE):BOOLEAN;
BEGIN RESET(F,NAMEOFFILE,'/E/O/N:9');AOPENIN:=ERSTAT(F)MOD 8192=0;END;
FUNCTION AOPENOUT(VAR F:ALPHAFILE):BOOLEAN;
BEGIN REWRITE(F,NAMEOFFILE,'/O/N:2');AOPENOUT:=ERSTAT(F)MOD 8192=0;END;
FUNCTION BOPENIN(VAR F:BYTEFILE):BOOLEAN;
BEGIN RESET(F,NAMEOFFILE,'/B:8/O/N:2');BOPENIN:=ERSTAT(F)MOD 8192=0;END;
FUNCTION BOPENOUT(VAR F:BYTEFILE):BOOLEAN;
BEGIN REWRITE(F,NAMEOFFILE,'/O/N:9/P:256');
BOPENOUT:=ERSTAT(F)MOD 8192=0;END;
FUNCTION WOPENIN(VAR F:WORDFILE):BOOLEAN;
BEGIN RESET(F,NAMEOFFILE,'/O/N:9');WOPENIN:=ERSTAT(F)MOD 8192=0;END;
FUNCTION WOPENOUT(VAR F:WORDFILE):BOOLEAN;
BEGIN REWRITE(F,NAMEOFFILE,'/O/N:9');WOPENOUT:=ERSTAT(F)MOD 8192=0;END;
{:27}{28:}PROCEDURE ACLOSE(VAR F:ALPHAFILE);BEGIN CLOSE(F);END;
PROCEDURE BCLOSE(VAR F:BYTEFILE);BEGIN CLOSE(F);END;
PROCEDURE WCLOSE(VAR F:WORDFILE);BEGIN CLOSE(F);END;{:28}{31:}
FUNCTION INPUTLN(VAR F:ALPHAFILE;BYPASSEOLN:BOOLEAN):BOOLEAN;LABEL 1,30;
VAR N:INTEGER;K,M:0..BUFSIZE;
BEGIN IF BYPASSEOLN THEN BEGIN IF NOT EOF(F)THEN GET(F);
IF NOT EOF(F)THEN IF F↑=CHR(10)THEN GET(F);END;LAST:=FIRST;
IF EOF(F)THEN INPUTLN:=FALSE ELSE BEGIN READ(F,AUXBUF:N);
IF BUFFER[FIRST]=12 THEN BEGIN PAGE:=PAGE+1;LINE:=1;END;
1:IF LAST+N>MAXBUFSTACK THEN IF LAST+N>=BUFSIZE THEN BEGIN MAXBUFSTACK:=
BUFSIZE;OVERFLOW(128,BUFSIZE);END ELSE MAXBUFSTACK:=LAST+N;
IF N>0 THEN BEGIN M:=LAST;IF N=72 THEN LAST:=M+71 ELSE LAST:=M+N;
FOR K:=M TO LAST-1 DO BUFFER[K]:=XORD[AUXBUF[K-M]];
IF N=72 THEN BEGIN READ(F,AUXBUF:N);GOTO 1;END;
END ELSE IF F↑=CHR(12)THEN BEGIN AUXBUF[0]:=F↑;N:=1;GOTO 1;END;
WHILE TRUE DO BEGIN IF LAST=FIRST THEN GOTO 30;
IF BUFFER[LAST-1]<>32 THEN GOTO 30;LAST:=LAST-1;END;30:INPUTLN:=TRUE;
END;END;{:31}{37:}PROCEDURE ESCI(VAR X:INTEGER);EXTERN;
FUNCTION RESCAN:BOOLEAN;EXTERN;FUNCTION TMPIN(F:STRING;
VAR S:STRING):INTEGER;EXTERN;FUNCTION CCLSW:BOOLEAN;EXTERN;
PROCEDURE PTWR1W(PTY,C:INTEGER);EXTERN;FUNCTION INITTERMINAL:BOOLEAN;
LABEL 10;VAR L:INTEGER;LINEFOUND:BOOLEAN;
TMPCORBUF:PACKED ARRAY[0..100]OF CHAR;BEGIN;ESCI(INTERRUPT);LAST:=FIRST;
IF CCLSW THEN BEGIN L:=TMPIN('TEX',TMPCORBUF);CURINPUT.LOCFIELD:=1;
WHILE(CURINPUT.LOCFIELD<L)AND(TMPCORBUF[CURINPUT.LOCFIELD]<>'←')DO
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
WHILE CURINPUT.LOCFIELD<L DO BEGIN IF TMPCORBUF[CURINPUT.LOCFIELD]>' '
THEN BEGIN BUFFER[LAST]:=XORD[TMPCORBUF[CURINPUT.LOCFIELD]];
LAST:=LAST+1;END;CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;
END ELSE IF FALSE THEN IF RESCAN THEN BEGIN READLN(TTY);
WHILE(NOT EOLN(TTY))AND(TTY↑<>';')DO GET(TTY);
IF TTY↑=';'THEN BEGIN GET(TTY);
WHILE NOT EOLN(TTY)DO BEGIN BUFFER[LAST]:=XORD[TTY↑];LAST:=LAST+1;
GET(TTY);END;END;END;LINEFOUND:=(LAST>FIRST);
WHILE TRUE DO BEGIN CURINPUT.LOCFIELD:=FIRST;
WHILE(CURINPUT.LOCFIELD<LAST)AND(BUFFER[CURINPUT.LOCFIELD]=32)DO
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
IF CURINPUT.LOCFIELD<LAST THEN BEGIN INITTERMINAL:=TRUE;GOTO 10;END;
IF LINEFOUND THEN WRITELN(TTY,'Please type the name of your input file.'
);BEGIN IF INSKP0 THEN END;WRITE(TTY,'**');BREAK(TTY);BUFFER[FIRST]:=0;
IF NOT INPUTLN(TTY,TRUE)THEN BEGIN WRITELN(TTY);
WRITE(TTY,'! End of file on the terminal... why?');INITTERMINAL:=FALSE;
GOTO 10;END;LINEFOUND:=TRUE;END;10:END;{:37}{43:}
FUNCTION MAKESTRING:STRNUMBER;
BEGIN IF STRPTR=MAXSTRINGS THEN OVERFLOW(130,MAXSTRINGS-INITSTRPTR);
STRPTR:=STRPTR+1;STRSTART[STRPTR]:=POOLPTR;MAKESTRING:=STRPTR-1;END;
{:43}{45:}FUNCTION STREQBUF(S:STRNUMBER;K:INTEGER):BOOLEAN;LABEL 45;
VAR J:POOLPOINTER;RESULT:BOOLEAN;BEGIN J:=STRSTART[S];
WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>BUFFER[K]THEN BEGIN RESULT
:=FALSE;GOTO 45;END;J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQBUF:=RESULT;
END;{:45}{46:}FUNCTION STREQSTR(S,T:STRNUMBER):BOOLEAN;LABEL 45;
VAR J,K:POOLPOINTER;RESULT:BOOLEAN;BEGIN RESULT:=FALSE;
IF(STRSTART[S+1]-STRSTART[S])<>(STRSTART[T+1]-STRSTART[T])THEN GOTO 45;
J:=STRSTART[S];K:=STRSTART[T];
WHILE J<STRSTART[S+1]DO BEGIN IF STRPOOL[J]<>STRPOOL[K]THEN GOTO 45;
J:=J+1;K:=K+1;END;RESULT:=TRUE;45:STREQSTR:=RESULT;END;{:46}{47:}
FUNCTION GETSTRINGSST:BOOLEAN;LABEL 30,10;VAR K,L:0..127;M,N:CHAR;
G:STRNUMBER;A:INTEGER;C:BOOLEAN;BEGIN POOLPTR:=0;STRPTR:=0;
STRSTART[0]:=0;{48:}FOR K:=0 TO 127 DO BEGIN IF({49:}
(K<32)OR(K>126){:49})THEN BEGIN BEGIN STRPOOL[POOLPTR]:=94;
POOLPTR:=POOLPTR+1;END;BEGIN STRPOOL[POOLPTR]:=94;POOLPTR:=POOLPTR+1;
END;IF K<64 THEN BEGIN STRPOOL[POOLPTR]:=K+64;POOLPTR:=POOLPTR+1;
END ELSE BEGIN STRPOOL[POOLPTR]:=K-64;POOLPTR:=POOLPTR+1;END;
END ELSE BEGIN STRPOOL[POOLPTR]:=K;POOLPTR:=POOLPTR+1;END;G:=MAKESTRING;
END{:48};{51:}NAMEOFFILE:=POOLNAME;
IF AOPENIN(POOLFILE)THEN BEGIN C:=FALSE;REPEAT{52:}
BEGIN IF EOF(POOLFILE)THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'! TEX.POOL has no check sum.');ACLOSE(POOLFILE);
GETSTRINGSST:=FALSE;GOTO 10;END;READ(POOLFILE,M,N);IF M='*'THEN{53:}
BEGIN A:=0;K:=1;
WHILE TRUE DO BEGIN IF(XORD[N]<48)OR(XORD[N]>57)THEN BEGIN BEGIN IF
INSKP0 THEN END;
WRITELN(TTY,'! TEX.POOL check sum doesn''t have nine digits.');
ACLOSE(POOLFILE);GETSTRINGSST:=FALSE;GOTO 10;END;A:=10*A+XORD[N]-48;
IF K=9 THEN GOTO 30;K:=K+1;READ(POOLFILE,N);END;
30:IF A<>191718838 THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'! TEX.POOL doesn''t match; TANGLE me again.');
ACLOSE(POOLFILE);GETSTRINGSST:=FALSE;GOTO 10;END;C:=TRUE;END{:53}
ELSE BEGIN IF(XORD[M]<48)OR(XORD[M]>57)OR(XORD[N]<48)OR(XORD[N]>57)THEN
BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'! TEX.POOL line doesn''t begin with two digits.');
ACLOSE(POOLFILE);GETSTRINGSST:=FALSE;GOTO 10;END;
L:=XORD[M]*10+XORD[N]-48*11;
IF POOLPTR+L+STRINGVACANC>POOLSIZE THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'! You have to increase POOLSIZE.');ACLOSE(POOLFILE);
GETSTRINGSST:=FALSE;GOTO 10;END;
FOR K:=1 TO L DO BEGIN IF EOLN(POOLFILE)THEN M:=' 'ELSE READ(POOLFILE,M)
;BEGIN STRPOOL[POOLPTR]:=XORD[M];POOLPTR:=POOLPTR+1;END;END;
READLN(POOLFILE);G:=MAKESTRING;END;END{:52};UNTIL C;ACLOSE(POOLFILE);
GETSTRINGSST:=TRUE;END ELSE BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'! I can''t read TEX.POOL.');ACLOSE(POOLFILE);
GETSTRINGSST:=FALSE;GOTO 10;END{:51};10:END;{:47}{66:}
PROCEDURE PRINTTWO(N:INTEGER);BEGIN N:=ABS(N)MOD 100;
PRINTCHAR(48+(N DIV 10));PRINTCHAR(48+(N MOD 10));END;{:66}{67:}
PROCEDURE PRINTHEX(N:INTEGER);VAR K:0..22;BEGIN K:=0;PRINTCHAR(34);
REPEAT DIG[K]:=N MOD 16;N:=N DIV 16;K:=K+1;UNTIL N=0;PRINTTHEDIGS(K);
END;{:67}{68:}PROCEDURE PRINTASCII(C:INTEGER);
BEGIN IF(C>=0)AND(C<=127)THEN PRINT(C)ELSE BEGIN PRINTCHAR(91);
IF C<0 THEN PRINTINT(C)ELSE PRINTHEX(C);PRINTCHAR(93);END;END;{:68}{69:}
PROCEDURE PRINTROMANIN(N:INTEGER);LABEL 10;VAR J,K:POOLPOINTER;
U,V:NONNEGATIVEI;BEGIN J:=STRSTART[132];V:=1000;
WHILE TRUE DO BEGIN WHILE N>=V DO BEGIN PRINTCHAR(STRPOOL[J]);N:=N-V;
END;IF N<=0 THEN GOTO 10;K:=J+2;U:=V DIV(STRPOOL[K-1]-48);
IF STRPOOL[K-1]=50 THEN BEGIN K:=K+2;U:=U DIV(STRPOOL[K-1]-48);END;
IF N+U>=V THEN BEGIN PRINTCHAR(STRPOOL[K]);N:=N+U;END ELSE BEGIN J:=J+2;
V:=V DIV(STRPOOL[J-1]-48);END;END;10:END;{:69}{70:}
PROCEDURE PRINTCURRENT;VAR J:POOLPOINTER;BEGIN J:=STRSTART[STRPTR];
WHILE J<POOLPTR DO BEGIN PRINTCHAR(STRPOOL[J]);J:=J+1;END;END;{:70}{71:}
PROCEDURE TERMINPUT;VAR K:0..BUFSIZE;BEGIN BREAK(TTY);BUFFER[FIRST]:=0;
IF NOT INPUTLN(TTY,TRUE)THEN FATALERROR(133);TERMOFFSET:=0;
SELECTOR:=SELECTOR-1;
IF LAST<>FIRST THEN FOR K:=FIRST TO LAST-1 DO PRINT(BUFFER[K]);PRINTLN;
SELECTOR:=SELECTOR+1;END;{:71}{91:}PROCEDURE INTERROR(N:INTEGER);
BEGIN PRINT(158);PRINTINT(N);PRINTCHAR(41);ERROR;END;{:91}{92:}
PROCEDURE NORMALIZESEL;
BEGIN IF JOBNAME>0 THEN SELECTOR:=19 ELSE SELECTOR:=17;
IF JOBNAME=0 THEN OPENLOGFILE;
IF INTERACTION=0 THEN SELECTOR:=SELECTOR-1;END;{:92}{98:}
PROCEDURE PAUSEFORINST;BEGIN IF OKTOINTERRUP THEN BEGIN INTERACTION:=3;
IF(SELECTOR=18)OR(SELECTOR=16)THEN SELECTOR:=SELECTOR+1;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(168);END;BEGIN HELPPTR:=3;HELPLINE[2]:=169;HELPLINE[1]:=170;
HELPLINE[0]:=171;END;DELETIONSALL:=FALSE;ERROR;DELETIONSALL:=TRUE;
INTERRUPT:=0;END;END;{:98}{100:}FUNCTION HALF(X:INTEGER):INTEGER;
BEGIN IF ODD(X)THEN HALF:=(X+1)DIV 2 ELSE HALF:=X DIV 2;END;{:100}{102:}
FUNCTION ROUNDDECIMAL(K:SMALLNUMBER):SCALED;VAR A:INTEGER;BEGIN A:=0;
WHILE K>0 DO BEGIN K:=K-1;A:=(A+DIG[K]*131072)DIV 10;END;
ROUNDDECIMAL:=(A+1)DIV 2;END;{:102}{103:}
PROCEDURE PRINTSCALED(S:SCALED);VAR DELTA:SCALED;
BEGIN IF S<0 THEN BEGIN PRINTCHAR(45);S:=-S;END;PRINTINT(S DIV 65536);
PRINTCHAR(46);S:=10*(S MOD 65536)+5;DELTA:=10;
REPEAT IF DELTA>65536 THEN S:=S+32768-(DELTA DIV 2);
PRINTCHAR(48+(S DIV 65536));S:=10*(S MOD 65536);DELTA:=DELTA*10;
UNTIL S<=DELTA;END;{:103}{105:}FUNCTION NXPLUSY(N:INTEGER;
X,Y:SCALED):SCALED;BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;END;
IF N=0 THEN NXPLUSY:=Y ELSE IF((X<=(1073741823-Y)DIV N)AND(-X<=(
1073741823+Y)DIV N))THEN NXPLUSY:=N*X+Y ELSE BEGIN ARITHERROR:=TRUE;
NXPLUSY:=0;END;END;{:105}{106:}FUNCTION XOVERN(X:SCALED;
N:INTEGER):SCALED;VAR NEGATIVE:BOOLEAN;BEGIN NEGATIVE:=FALSE;
IF N=0 THEN BEGIN ARITHERROR:=TRUE;XOVERN:=0;REMAINDER:=X;
END ELSE BEGIN IF N<0 THEN BEGIN X:=-X;N:=-N;NEGATIVE:=TRUE;END;
IF X>=0 THEN BEGIN XOVERN:=X DIV N;REMAINDER:=X MOD N;
END ELSE BEGIN XOVERN:=-((-X)DIV N);REMAINDER:=-((-X)MOD N);END;END;
IF NEGATIVE THEN REMAINDER:=-REMAINDER;END;{:106}{107:}
FUNCTION XNOVERD(X:SCALED;N,D:INTEGER):SCALED;VAR POSITIVE:BOOLEAN;
T,U,V:NONNEGATIVEI;BEGIN IF X>=0 THEN POSITIVE:=TRUE ELSE BEGIN X:=-X;
POSITIVE:=FALSE;END;T:=(X MOD 32768)*N;U:=(X DIV 32768)*N+(T DIV 32768);
V:=(U MOD D)*32768+(T MOD 32768);
IF U DIV D>=32768 THEN ARITHERROR:=TRUE ELSE U:=32768*(U DIV D)+(V DIV D
);IF POSITIVE THEN BEGIN XNOVERD:=U;REMAINDER:=V MOD D;
END ELSE BEGIN XNOVERD:=-U;REMAINDER:=-(V MOD D);END;END;{:107}{108:}
FUNCTION BADNESS(T,S:SCALED):HALFWORD;VAR R:INTEGER;
BEGIN IF T=0 THEN BADNESS:=0 ELSE IF S<=0 THEN BADNESS:=10000 ELSE BEGIN
IF T<=7230584 THEN R:=(T*297)DIV S ELSE IF S>=1663497 THEN R:=T DIV(S
DIV 297)ELSE R:=T;
IF R>1290 THEN BADNESS:=10000 ELSE BADNESS:=(R*R*R+131072)DIV 262144;
END;END;{:108}{114:}PROCEDURE PRINTWORD(W:MEMORYWORD);
BEGIN PRINTINT(W.INT);PRINTCHAR(32);PRINTSCALED(W.INT);PRINTCHAR(32);
PRINTSCALED(ROUND(65536*W.GR));PRINTLN;PRINTINT(W.HH.LH);PRINTCHAR(61);
PRINTINT(W.HH.B0);PRINTCHAR(58);PRINTINT(W.HH.B1);PRINTCHAR(59);
PRINTINT(W.HH.RH);PRINTCHAR(32);PRINTINT(W.QQQQ.B0);PRINTCHAR(58);
PRINTINT(W.QQQQ.B1);PRINTCHAR(58);PRINTINT(W.QQQQ.B2);PRINTCHAR(58);
PRINTINT(W.QQQQ.B3);END;{:114}{119:}{292:}
PROCEDURE SHOWTOKENLIS(P,Q:INTEGER;L:INTEGER);LABEL 10;VAR M,C:INTEGER;
MATCHCHR:ASCIICODE;N:ASCIICODE;BEGIN MATCHCHR:=35;N:=48;TALLY:=0;
WHILE(P<>0)AND(TALLY<L)DO BEGIN IF P=Q THEN{320:}
BEGIN FIRSTCOUNT:=TALLY;TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLIN;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END{:320};{293:}
IF(P<HIMEMMIN)OR(P>MEMEND)THEN BEGIN PRINTESC(181);GOTO 10;END;
IF MEM[P].HH.LH>=4096 THEN PRINTCS(MEM[P].HH.LH-4096)ELSE BEGIN M:=MEM[P
].HH.LH DIV 256;C:=MEM[P].HH.LH MOD 256;
IF(MEM[P].HH.LH<0)OR(C>127)THEN PRINTESC(417)ELSE{294:}
CASE M OF 1,2,3,4,7,8,10,11,12:PRINT(C);6:BEGIN PRINT(C);PRINT(C);END;
5:BEGIN PRINT(MATCHCHR);
IF C<=9 THEN PRINTCHAR(C+48)ELSE BEGIN PRINTCHAR(33);GOTO 10;END;END;
13:BEGIN MATCHCHR:=C;PRINT(C);N:=N+1;PRINTCHAR(N);IF N>57 THEN GOTO 10;
END;14:PRINT(418);OTHERS:PRINTESC(417)END{:294};END{:293};
P:=MEM[P].HH.RH;END;IF P<>0 THEN PRINTESC(416);10:END;{:292}{306:}
PROCEDURE RUNAWAY;VAR P:HALFWORD;
BEGIN IF SCANNERSTATU>1 THEN BEGIN PRINTNL(431);
CASE SCANNERSTATU OF 2:BEGIN PRINT(432);P:=DEFREF;END;
3:BEGIN PRINT(433);P:=2997;END;4:BEGIN PRINT(434);P:=2996;END;
5:BEGIN PRINT(435);P:=DEFREF;END;END;PRINTCHAR(63);PRINTLN;
SHOWTOKENLIS(MEM[P].HH.RH,0,ERRORLINE-10);END;END;{:306}{:119}{120:}
FUNCTION GETAVAIL:HALFWORD;VAR P:HALFWORD;BEGIN P:=AVAIL;
IF P<>0 THEN AVAIL:=MEM[AVAIL].HH.RH ELSE IF MEMEND<MEMMAX THEN BEGIN
MEMEND:=MEMEND+1;P:=MEMEND;END ELSE BEGIN HIMEMMIN:=HIMEMMIN-1;
P:=HIMEMMIN;IF HIMEMMIN<=LOMEMMAX THEN BEGIN RUNAWAY;
OVERFLOW(172,MEMMAX+1-MEMMIN);END;END;MEM[P].HH.RH:=0;
DYNUSED:=DYNUSED+1;GETAVAIL:=P;END;{:120}{123:}
PROCEDURE FLUSHLIST(P:HALFWORD);VAR Q,R:HALFWORD;
BEGIN IF P<>0 THEN BEGIN R:=P;REPEAT Q:=R;R:=MEM[R].HH.RH;
DYNUSED:=DYNUSED-1;UNTIL R=0;MEM[Q].HH.RH:=AVAIL;AVAIL:=P;END;END;{:123}
{125:}FUNCTION GETNODE(S:INTEGER):HALFWORD;LABEL 40,10,20;
VAR P:HALFWORD;Q:HALFWORD;R:INTEGER;T:INTEGER;BEGIN 20:P:=ROVER;
REPEAT{127:}Q:=P+MEM[P].HH.LH;
WHILE(MEM[Q].HH.RH=32768)DO BEGIN T:=MEM[Q+1].HH.RH;
IF Q=ROVER THEN ROVER:=T;MEM[T+1].HH.LH:=MEM[Q+1].HH.LH;
MEM[MEM[Q+1].HH.LH+1].HH.RH:=T;Q:=Q+MEM[Q].HH.LH;END;R:=Q-S;
IF R>P+1 THEN{128:}BEGIN MEM[P].HH.LH:=R-P;ROVER:=P;GOTO 40;END{:128};
IF R=P THEN IF MEM[P+1].HH.RH<>P THEN{129:}BEGIN ROVER:=MEM[P+1].HH.RH;
T:=MEM[P+1].HH.LH;MEM[ROVER+1].HH.LH:=T;MEM[T+1].HH.RH:=ROVER;GOTO 40;
END{:129};MEM[P].HH.LH:=Q-P{:127};P:=MEM[P+1].HH.RH;UNTIL P=ROVER;
IF S=1073741824 THEN BEGIN GETNODE:=32768;GOTO 10;END;
IF LOMEMMAX+2<HIMEMMIN THEN IF LOMEMMAX+2<=32769 THEN{126:}
BEGIN IF LOMEMMAX+1000<HIMEMMIN THEN T:=LOMEMMAX+1000 ELSE T:=(LOMEMMAX+
HIMEMMIN+2)DIV 2;P:=MEM[ROVER+1].HH.LH;Q:=LOMEMMAX;MEM[P+1].HH.RH:=Q;
MEM[ROVER+1].HH.LH:=Q;IF T>32769 THEN T:=32769;MEM[Q+1].HH.RH:=ROVER;
MEM[Q+1].HH.LH:=P;MEM[Q].HH.RH:=32768;MEM[Q].HH.LH:=T-LOMEMMAX;
LOMEMMAX:=T;MEM[LOMEMMAX].HH.RH:=0;MEM[LOMEMMAX].HH.LH:=0;ROVER:=Q;
GOTO 20;END{:126};OVERFLOW(172,MEMMAX+1-MEMMIN);40:MEM[R].HH.RH:=0;
VARUSED:=VARUSED+S;GETNODE:=R;10:END;{:125}{130:}
PROCEDURE FREENODE(P:HALFWORD;S:HALFWORD);VAR Q:HALFWORD;
BEGIN MEM[P].HH.LH:=S;MEM[P].HH.RH:=32768;Q:=MEM[ROVER+1].HH.LH;
MEM[P+1].HH.LH:=Q;MEM[P+1].HH.RH:=ROVER;MEM[ROVER+1].HH.LH:=P;
MEM[Q+1].HH.RH:=P;VARUSED:=VARUSED-S;END;{:130}{131:}
PROCEDURE SORTAVAIL;VAR P,Q,R:HALFWORD;OLDROVER:HALFWORD;
BEGIN P:=GETNODE(1073741824);P:=MEM[ROVER+1].HH.RH;
MEM[ROVER+1].HH.RH:=32768;OLDROVER:=ROVER;WHILE P<>OLDROVER DO{132:}
IF P<ROVER THEN BEGIN Q:=P;P:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=ROVER;
ROVER:=Q;END ELSE BEGIN Q:=ROVER;
WHILE MEM[Q+1].HH.RH<P DO Q:=MEM[Q+1].HH.RH;R:=MEM[P+1].HH.RH;
MEM[P+1].HH.RH:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=P;P:=R;END{:132};
P:=ROVER;
WHILE MEM[P+1].HH.RH<>32768 DO BEGIN MEM[MEM[P+1].HH.RH+1].HH.LH:=P;
P:=MEM[P+1].HH.RH;END;MEM[P+1].HH.RH:=ROVER;MEM[ROVER+1].HH.LH:=P;END;
{:131}{136:}FUNCTION NEWNULLBOX:HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(7);MEM[P].HH.B0:=0;MEM[P].HH.B1:=0;MEM[P+1].INT:=0;
MEM[P+2].INT:=0;MEM[P+3].INT:=0;MEM[P+4].INT:=0;MEM[P+5].HH.RH:=0;
MEM[P+5].HH.B0:=0;MEM[P+5].HH.B1:=0;MEM[P+6].GR:=0.0;NEWNULLBOX:=P;END;
{:136}{139:}FUNCTION NEWRULE:HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(4);MEM[P].HH.B0:=2;MEM[P].HH.B1:=0;
MEM[P+1].INT:=-1073741824;MEM[P+2].INT:=-1073741824;
MEM[P+3].INT:=-1073741824;NEWRULE:=P;END;{:139}{144:}
FUNCTION NEWLIGATURE(F,C:QUARTERWORD;Q:HALFWORD):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=6;MEM[P].HH.B1:=0;
MEM[P+1].HH.B0:=F;MEM[P+1].HH.B1:=C;MEM[P+1].HH.RH:=Q;NEWLIGATURE:=P;
END;{:144}{145:}FUNCTION NEWDISC:HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=7;MEM[P].HH.B1:=0;MEM[P+1].HH.LH:=0;
MEM[P+1].HH.RH:=0;NEWDISC:=P;END;{:145}{147:}FUNCTION NEWMATH(W:SCALED;
S:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(2);
MEM[P].HH.B0:=9;MEM[P].HH.B1:=S;MEM[P+1].INT:=W;NEWMATH:=P;END;{:147}
{151:}FUNCTION NEWSPEC(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN Q:=GETNODE(4);MEM[Q]:=MEM[P];MEM[Q].HH.RH:=0;
MEM[Q+1].INT:=MEM[P+1].INT;MEM[Q+2].INT:=MEM[P+2].INT;
MEM[Q+3].INT:=MEM[P+3].INT;NEWSPEC:=Q;END;{:151}{152:}
FUNCTION NEWPARAMGLUE(N:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;Q:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=N+1;
MEM[P+1].HH.RH:=0;Q:={224:}EQTB[2626+N].HH.RH{:224};MEM[P+1].HH.LH:=Q;
MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWPARAMGLUE:=P;END;{:152}{153:}
FUNCTION NEWGLUE(Q:HALFWORD):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=10;MEM[P].HH.B1:=0;MEM[P+1].HH.RH:=0;
MEM[P+1].HH.LH:=Q;MEM[Q].HH.RH:=MEM[Q].HH.RH+1;NEWGLUE:=P;END;{:153}
{154:}FUNCTION NEWSKIPPARAM(N:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;
BEGIN TEMPPTR:=NEWSPEC({224:}EQTB[2626+N].HH.RH{:224});
P:=NEWGLUE(TEMPPTR);MEM[TEMPPTR].HH.RH:=0;MEM[P].HH.B1:=N+1;
NEWSKIPPARAM:=P;END;{:154}{156:}FUNCTION NEWKERN(W:SCALED):HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(2);MEM[P].HH.B0:=11;MEM[P].HH.B1:=0;
MEM[P+1].INT:=W;NEWKERN:=P;END;{:156}{158:}
FUNCTION NEWPENALTY(M:INTEGER):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(2);MEM[P].HH.B0:=12;MEM[P].HH.B1:=0;MEM[P+1].INT:=M;
NEWPENALTY:=P;END;{:158}{167:}PROCEDURE CHECKMEM(PRINTLOCS:BOOLEAN);
LABEL 31,32;VAR P,Q:HALFWORD;CLOBBERED:BOOLEAN;
BEGIN FOR P:=MEMMIN TO LOMEMMAX DO FREE[P]:=FALSE;
FOR P:=HIMEMMIN TO MEMEND DO FREE[P]:=FALSE;{168:}P:=AVAIL;Q:=0;
CLOBBERED:=FALSE;
WHILE P<>0 DO BEGIN IF(P>MEMEND)OR(P<HIMEMMIN)THEN CLOBBERED:=TRUE ELSE
IF FREE[P]THEN CLOBBERED:=TRUE;IF CLOBBERED THEN BEGIN PRINTNL(173);
PRINTINT(Q);GOTO 31;END;FREE[P]:=TRUE;Q:=P;P:=MEM[Q].HH.RH;END;31:{:168}
;{169:}P:=ROVER;Q:=0;CLOBBERED:=FALSE;
REPEAT IF(P>=LOMEMMAX)OR(P<MEMMIN)THEN CLOBBERED:=TRUE ELSE IF(MEM[P+1].
HH.RH>=LOMEMMAX)OR(MEM[P+1].HH.RH<MEMMIN)THEN CLOBBERED:=TRUE ELSE IF
NOT((MEM[P].HH.RH=32768))OR(MEM[P].HH.LH<2)OR(P+MEM[P].HH.LH>LOMEMMAX)OR
(MEM[MEM[P+1].HH.RH+1].HH.LH<>P)THEN CLOBBERED:=TRUE;
IF CLOBBERED THEN BEGIN PRINTNL(174);PRINTINT(Q);GOTO 32;END;
FOR Q:=P TO P+MEM[P].HH.LH-1 DO BEGIN IF FREE[Q]THEN BEGIN PRINTNL(175);
PRINTINT(Q);GOTO 32;END;FREE[Q]:=TRUE;END;Q:=P;P:=MEM[P+1].HH.RH;
UNTIL P=ROVER;32:{:169};{170:}P:=MEMMIN;
WHILE P<=LOMEMMAX DO BEGIN IF(MEM[P].HH.RH=32768)THEN BEGIN PRINTNL(176)
;PRINTINT(P);END;WHILE(P<=LOMEMMAX)AND NOT FREE[P]DO P:=P+1;
WHILE(P<=LOMEMMAX)AND FREE[P]DO P:=P+1;END{:170};IF PRINTLOCS THEN{171:}
BEGIN PRINTNL(177);
FOR P:=MEMMIN TO LOMEMMAX DO IF NOT FREE[P]AND((P>WASLOMAX)OR WASFREE[P]
)THEN BEGIN PRINTCHAR(32);PRINTINT(P);END;
FOR P:=HIMEMMIN TO MEMEND DO IF NOT FREE[P]AND((P<WASHIMIN)OR(P>
WASMEMEND)OR WASFREE[P])THEN BEGIN PRINTCHAR(32);PRINTINT(P);END;
END{:171};FOR P:=MEMMIN TO LOMEMMAX DO WASFREE[P]:=FREE[P];
FOR P:=HIMEMMIN TO MEMEND DO WASFREE[P]:=FREE[P];WASMEMEND:=MEMEND;
WASLOMAX:=LOMEMMAX;WASHIMIN:=HIMEMMIN;END;{:167}{172:}
PROCEDURE SEARCHMEM(P:HALFWORD);VAR Q:INTEGER;
BEGIN FOR Q:=MEMMIN TO LOMEMMAX DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN
PRINTNL(178);PRINTINT(Q);PRINTCHAR(41);END;
IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(179);PRINTINT(Q);PRINTCHAR(41);END;
END;
FOR Q:=HIMEMMIN TO MEMEND DO BEGIN IF MEM[Q].HH.RH=P THEN BEGIN PRINTNL(
178);PRINTINT(Q);PRINTCHAR(41);END;
IF MEM[Q].HH.LH=P THEN BEGIN PRINTNL(179);PRINTINT(Q);PRINTCHAR(41);END;
END;{255:}
FOR Q:=1 TO 3677 DO BEGIN IF EQTB[Q].HH.RH=P THEN BEGIN PRINTNL(364);
PRINTINT(Q);PRINTCHAR(41);END;END{:255};{285:}
IF SAVEPTR>0 THEN FOR Q:=0 TO SAVEPTR-1 DO BEGIN IF SAVESTACK[Q].HH.RH=P
THEN BEGIN PRINTNL(408);PRINTINT(Q);PRINTCHAR(41);END;END{:285};{933:}
FOR Q:=0 TO 307 DO BEGIN IF HYPHLIST[Q]=P THEN BEGIN PRINTNL(805);
PRINTINT(Q);PRINTCHAR(41);END;END{:933};END;{:172}{174:}
PROCEDURE SHORTDISPLAY(P:INTEGER);VAR N:INTEGER;
BEGIN WHILE P>MEMMIN DO BEGIN IF(P>=HIMEMMIN)THEN BEGIN IF P<=MEMEND
THEN BEGIN IF MEM[P].HH.B0<>FONTINSHORTD THEN BEGIN IF(MEM[P].HH.B0<0)OR
(MEM[P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE{267:}
PRINTESC(HASH[2368+MEM[P].HH.B0].RH){:267};PRINTCHAR(32);
FONTINSHORTD:=MEM[P].HH.B0;END;PRINTASCII(0+MEM[P].HH.B1-0);END;
END ELSE{175:}CASE MEM[P].HH.B0 OF 0,1,3,8,4,5,13:PRINT(180);
2:PRINTCHAR(124);10:IF MEM[P+1].HH.LH<>1 THEN PRINTCHAR(32);
9:PRINTCHAR(36);6:SHORTDISPLAY(MEM[P+1].HH.RH);
7:BEGIN SHORTDISPLAY(MEM[P+1].HH.LH);SHORTDISPLAY(MEM[P+1].HH.RH);
N:=MEM[P].HH.B1;
WHILE N>0 DO BEGIN IF MEM[P].HH.RH<>0 THEN P:=MEM[P].HH.RH;N:=N-1;END;
END;OTHERS:END{:175};P:=MEM[P].HH.RH;END;END;{:174}{176:}
PROCEDURE PRINTFONTAND(P:INTEGER);
BEGIN IF P>MEMEND THEN PRINTESC(181)ELSE BEGIN IF(MEM[P].HH.B0<0)OR(MEM[
P].HH.B0>FONTMAX)THEN PRINTCHAR(42)ELSE{267:}
PRINTESC(HASH[2368+MEM[P].HH.B0].RH){:267};PRINTCHAR(32);
PRINTASCII(0+MEM[P].HH.B1-0);END;END;PROCEDURE PRINTMARK(P:INTEGER);
BEGIN PRINTCHAR(123);
IF(P<HIMEMMIN)OR(P>MEMEND)THEN PRINTESC(181)ELSE SHOWTOKENLIS(MEM[P].HH.
RH,0,MAXPRINTLINE-10);PRINTCHAR(125);END;
PROCEDURE PRINTRULEDIM(D:SCALED);
BEGIN IF(D=-1073741824)THEN PRINTCHAR(42)ELSE PRINTSCALED(D);END;{:176}
{177:}PROCEDURE PRINTGLUE(D:SCALED;ORDER:INTEGER;S:STRNUMBER);
BEGIN PRINTSCALED(D);
IF(ORDER<0)OR(ORDER>3)THEN PRINT(182)ELSE IF ORDER>0 THEN BEGIN PRINT(
183);WHILE ORDER>1 DO BEGIN PRINTCHAR(108);ORDER:=ORDER-1;END;
END ELSE IF S<>0 THEN PRINT(S);END;{:177}{178:}
PROCEDURE PRINTSPEC(P:INTEGER;S:STRNUMBER);
BEGIN IF(P<MEMMIN)OR(P>=LOMEMMAX)THEN PRINTCHAR(42)ELSE BEGIN
PRINTSCALED(MEM[P+1].INT);IF S<>0 THEN PRINT(S);
IF MEM[P+2].INT<>0 THEN BEGIN PRINT(184);
PRINTGLUE(MEM[P+2].INT,MEM[P].HH.B0,S);END;
IF MEM[P+3].INT<>0 THEN BEGIN PRINT(185);
PRINTGLUE(MEM[P+3].INT,MEM[P].HH.B1,S);END;END;END;{:178}{179:}{691:}
PROCEDURE PRINTFAMANDC(P:HALFWORD);BEGIN PRINTESC(333);
PRINTINT(MEM[P].HH.B0);PRINTCHAR(32);PRINTASCII(0+MEM[P].HH.B1-0);END;
PROCEDURE PRINTDELIMIT(P:HALFWORD);VAR A:INTEGER;
BEGIN A:=MEM[P].QQQQ.B0*256+0+MEM[P].QQQQ.B1-0;
A:=A*4096+MEM[P].QQQQ.B2*256+0+MEM[P].QQQQ.B3-0;
IF A<0 THEN PRINTINT(A)ELSE PRINTHEX(A);END;{:691}{692:}
PROCEDURE SHOWINFO;FORWARD;PROCEDURE PRINTSUBSIDI(P:HALFWORD;
C:ASCIICODE);
BEGIN IF(POOLPTR-STRSTART[STRPTR])>=DEPTHTHRESHO THEN BEGIN IF MEM[P].HH
.RH<>0 THEN PRINT(186);END ELSE BEGIN BEGIN STRPOOL[POOLPTR]:=C;
POOLPTR:=POOLPTR+1;END;TEMPPTR:=P;CASE MEM[P].HH.RH OF 1:BEGIN PRINTLN;
PRINTCURRENT;PRINTFAMANDC(P);END;2:SHOWINFO;
3:IF MEM[P].HH.LH=0 THEN BEGIN PRINTLN;PRINTCURRENT;PRINT(726);
END ELSE SHOWINFO;OTHERS:END;POOLPTR:=POOLPTR-1;END;END;{:692}{694:}
PROCEDURE PRINTSTYLE(C:INTEGER);BEGIN CASE C DIV 2 OF 0:PRINTESC(727);
1:PRINTESC(728);2:PRINTESC(729);3:PRINTESC(730);OTHERS:PRINT(731)END;
END;{:694}{225:}PROCEDURE PRINTSKIPPAR(N:INTEGER);
BEGIN CASE N OF 0:PRINTESC(245);1:PRINTESC(246);2:PRINTESC(247);
3:PRINTESC(248);4:PRINTESC(249);5:PRINTESC(250);6:PRINTESC(251);
7:PRINTESC(252);8:PRINTESC(253);9:PRINTESC(254);10:PRINTESC(255);
11:PRINTESC(256);12:PRINTESC(257);13:PRINTESC(258);14:PRINTESC(259);
15:PRINTESC(260);16:PRINTESC(261);17:PRINTESC(262);OTHERS:PRINT(263)END;
END;{:225}{:179}{182:}PROCEDURE SHOWNODELIST(P:INTEGER);LABEL 10;
VAR N:INTEGER;G:REAL;
BEGIN IF(POOLPTR-STRSTART[STRPTR])>DEPTHTHRESHO THEN BEGIN IF P>0 THEN
PRINT(186);GOTO 10;END;N:=0;WHILE P>MEMMIN DO BEGIN PRINTLN;
PRINTCURRENT;IF P>MEMEND THEN BEGIN PRINT(187);GOTO 10;END;N:=N+1;
IF N>BREADTHMAX THEN BEGIN PRINT(188);GOTO 10;END;{183:}
IF(P>=HIMEMMIN)THEN PRINTFONTAND(P)ELSE CASE MEM[P].HH.B0 OF 0,1,13:{184
:}BEGIN IF MEM[P].HH.B0=0 THEN PRINTESC(104)ELSE IF MEM[P].HH.B0=1 THEN
PRINTESC(118)ELSE PRINTESC(190);PRINT(191);PRINTSCALED(MEM[P+3].INT);
PRINTCHAR(43);PRINTSCALED(MEM[P+2].INT);PRINT(192);
PRINTSCALED(MEM[P+1].INT);IF MEM[P].HH.B0=13 THEN{185:}
BEGIN IF MEM[P].HH.B1<>0 THEN BEGIN PRINT(158);
PRINTINT(0+MEM[P].HH.B1+1);PRINT(194);END;
IF MEM[P+6].INT<>0 THEN BEGIN PRINT(195);
PRINTGLUE(MEM[P+6].INT,MEM[P+5].HH.B1,0);END;
IF MEM[P+4].INT<>0 THEN BEGIN PRINT(196);
PRINTGLUE(MEM[P+4].INT,MEM[P+5].HH.B0,0);END;END{:185}ELSE BEGIN{186:}
G:=MEM[P+6].GR;IF(G<>0.0)AND(MEM[P+5].HH.B0<>0)THEN BEGIN PRINT(197);
IF MEM[P+5].HH.B0=2 THEN PRINT(198);
IF ABS(MEM[P+6].INT)<1048576 THEN PRINT(199)ELSE IF ABS(G)>20000.0 THEN
BEGIN IF G>0.0 THEN PRINTCHAR(62)ELSE PRINT(200);
PRINTGLUE(20000*65536,MEM[P+5].HH.B1,0);
END ELSE PRINTGLUE(ROUND(65536*G),MEM[P+5].HH.B1,0);END{:186};
IF MEM[P+4].INT<>0 THEN BEGIN PRINT(193);PRINTSCALED(MEM[P+4].INT);END;
END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+5].HH.RH);POOLPTR:=POOLPTR-1;END;END{:184};2:{187:}
BEGIN PRINTESC(201);PRINTRULEDIM(MEM[P+3].INT);PRINTCHAR(43);
PRINTRULEDIM(MEM[P+2].INT);PRINT(192);PRINTRULEDIM(MEM[P+1].INT);
END{:187};3:{188:}BEGIN PRINTESC(202);PRINTINT(0+MEM[P].HH.B1-0);
PRINT(203);PRINTSCALED(MEM[P+3].INT);PRINT(204);
PRINTSPEC(MEM[P+4].HH.RH,0);PRINTCHAR(44);PRINTSCALED(MEM[P+2].INT);
PRINT(205);PRINTINT(MEM[P+1].INT);BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+4].HH.LH);POOLPTR:=POOLPTR-1;
END;END{:188};8:{1356:}
CASE MEM[P].HH.B1 OF 0:BEGIN PRINTWRITEWH(1142,P);PRINTCHAR(61);
PRINTFILENAM(MEM[P+1].HH.RH,MEM[P+2].HH.LH,MEM[P+2].HH.RH);END;
1:BEGIN PRINTWRITEWH(458,P);PRINTMARK(MEM[P+1].HH.RH);END;
2:PRINTWRITEWH(1143,P);3:BEGIN PRINTESC(1144);PRINTMARK(MEM[P+1].HH.RH);
END;OTHERS:PRINT(1148)END{:1356};10:{189:}
IF MEM[P].HH.B1>=100 THEN{190:}BEGIN PRINTESC(210);
IF MEM[P].HH.B1=101 THEN PRINTCHAR(99)ELSE IF MEM[P].HH.B1=102 THEN
PRINTCHAR(120);PRINT(211);PRINTSPEC(MEM[P+1].HH.LH,0);
BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END;END{:190}
ELSE BEGIN PRINTESC(206);IF MEM[P].HH.B1<>0 THEN BEGIN PRINTCHAR(40);
IF MEM[P].HH.B1<98 THEN PRINTSKIPPAR(MEM[P].HH.B1-1)ELSE IF MEM[P].HH.B1
=98 THEN PRINTESC(207)ELSE PRINTESC(208);PRINTCHAR(41);END;
IF MEM[P].HH.B1<>98 THEN BEGIN PRINTCHAR(32);
IF MEM[P].HH.B1<98 THEN PRINTSPEC(MEM[P+1].HH.LH,0)ELSE PRINTSPEC(MEM[P
+1].HH.LH,209);END;END{:189};11:{191:}
IF MEM[P].HH.B1<>99 THEN BEGIN PRINTESC(212);
IF MEM[P].HH.B1<>0 THEN PRINTCHAR(32);PRINTSCALED(MEM[P+1].INT);
IF MEM[P].HH.B1=2 THEN PRINT(213);END ELSE BEGIN PRINTESC(214);
PRINTSCALED(MEM[P+1].INT);PRINT(209);END{:191};9:{192:}
BEGIN PRINTESC(215);IF MEM[P].HH.B1=0 THEN PRINT(216)ELSE PRINT(217);
IF MEM[P+1].INT<>0 THEN BEGIN PRINT(218);PRINTSCALED(MEM[P+1].INT);END;
END{:192};6:{193:}BEGIN PRINTFONTAND(P+1);PRINT(219);
FONTINSHORTD:=MEM[P+1].HH.B0;SHORTDISPLAY(MEM[P+1].HH.RH);PRINTCHAR(41);
END{:193};12:{194:}BEGIN PRINTESC(220);PRINTINT(MEM[P+1].INT);END{:194};
7:{195:}BEGIN PRINTESC(221);IF MEM[P].HH.B1>0 THEN BEGIN PRINT(222);
PRINTINT(MEM[P].HH.B1);END;BEGIN BEGIN STRPOOL[POOLPTR]:=46;
POOLPTR:=POOLPTR+1;END;SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
END;BEGIN STRPOOL[POOLPTR]:=124;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;END{:195};4:{196:}
BEGIN PRINTESC(223);PRINTMARK(MEM[P+1].INT);END{:196};5:{197:}
BEGIN PRINTESC(224);BEGIN BEGIN STRPOOL[POOLPTR]:=46;POOLPTR:=POOLPTR+1;
END;SHOWNODELIST(MEM[P+1].INT);POOLPTR:=POOLPTR-1;END;END{:197};{690:}
14:PRINTSTYLE(MEM[P].HH.B1);15:{695:}BEGIN PRINTESC(388);
BEGIN STRPOOL[POOLPTR]:=68;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.LH);POOLPTR:=POOLPTR-1;
BEGIN STRPOOL[POOLPTR]:=84;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+1].HH.RH);POOLPTR:=POOLPTR-1;
BEGIN STRPOOL[POOLPTR]:=83;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+2].HH.LH);POOLPTR:=POOLPTR-1;
BEGIN STRPOOL[POOLPTR]:=115;POOLPTR:=POOLPTR+1;END;
SHOWNODELIST(MEM[P+2].HH.RH);POOLPTR:=POOLPTR-1;END{:695};
16,17,18,19,20,21,22,23,24,27,26,29,28,30,31:{696:}
BEGIN CASE MEM[P].HH.B0 OF 16:PRINTESC(732);17:PRINTESC(733);
18:PRINTESC(734);19:PRINTESC(735);20:PRINTESC(736);21:PRINTESC(737);
22:PRINTESC(738);23:PRINTESC(739);27:PRINTESC(740);26:PRINTESC(741);
29:PRINTESC(401);24:BEGIN PRINTESC(395);PRINTDELIMIT(P+4);END;
28:BEGIN PRINTESC(371);PRINTFAMANDC(P+4);END;30:BEGIN PRINTESC(742);
PRINTDELIMIT(P+1);END;31:BEGIN PRINTESC(743);PRINTDELIMIT(P+1);END;END;
IF MEM[P].HH.B1<>0 THEN IF MEM[P].HH.B1=1 THEN PRINTESC(744)ELSE
PRINTESC(745);IF MEM[P].HH.B0<30 THEN PRINTSUBSIDI(P+1,46);
PRINTSUBSIDI(P+2,94);PRINTSUBSIDI(P+3,95);END{:696};25:{697:}
BEGIN PRINTESC(746);
IF MEM[P+1].INT=1073741824 THEN PRINT(747)ELSE PRINTSCALED(MEM[P+1].INT)
;
IF(MEM[P+4].QQQQ.B0<>0)OR(MEM[P+4].QQQQ.B1<>0)OR(MEM[P+4].QQQQ.B2<>0)OR(
MEM[P+4].QQQQ.B3<>0)THEN BEGIN PRINT(748);PRINTDELIMIT(P+4);END;
IF(MEM[P+5].QQQQ.B0<>0)OR(MEM[P+5].QQQQ.B1<>0)OR(MEM[P+5].QQQQ.B2<>0)OR(
MEM[P+5].QQQQ.B3<>0)THEN BEGIN PRINT(749);PRINTDELIMIT(P+5);END;
PRINTSUBSIDI(P+2,92);PRINTSUBSIDI(P+3,47);END{:697};{:690}
OTHERS:PRINT(189)END{:183};P:=MEM[P].HH.RH;END;10:END;{:182}{198:}
PROCEDURE SHOWBOX(P:HALFWORD);BEGIN{236:}DEPTHTHRESHO:=EQTB[4392].INT;
BREADTHMAX:=EQTB[4391].INT{:236};IF BREADTHMAX<=0 THEN BREADTHMAX:=5;
IF POOLPTR+DEPTHTHRESHO>=POOLSIZE THEN DEPTHTHRESHO:=POOLSIZE-POOLPTR-1;
SHOWNODELIST(P);PRINTLN;END;{:198}{200:}
PROCEDURE DELETETOKENR(P:HALFWORD);
BEGIN IF MEM[P].HH.LH=0 THEN FLUSHLIST(P)ELSE MEM[P].HH.LH:=MEM[P].HH.LH
-1;END;{:200}{201:}PROCEDURE DELETEGLUERE(P:HALFWORD);
BEGIN IF MEM[P].HH.RH=0 THEN FREENODE(P,4)ELSE MEM[P].HH.RH:=MEM[P].HH.
RH-1;END;{:201}{202:}PROCEDURE FLUSHNODELIS(P:HALFWORD);LABEL 30;
VAR Q:HALFWORD;BEGIN WHILE P<>0 DO BEGIN Q:=MEM[P].HH.RH;
IF(P>=HIMEMMIN)THEN BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;
DYNUSED:=DYNUSED-1;
END ELSE BEGIN CASE MEM[P].HH.B0 OF 0,1,13:BEGIN FLUSHNODELIS(MEM[P+5].
HH.RH);FREENODE(P,7);GOTO 30;END;2:BEGIN FREENODE(P,4);GOTO 30;END;
3:BEGIN FLUSHNODELIS(MEM[P+4].HH.LH);DELETEGLUERE(MEM[P+4].HH.RH);
FREENODE(P,5);GOTO 30;END;8:{1358:}
BEGIN CASE MEM[P].HH.B1 OF 0:FREENODE(P,3);
1,3:BEGIN DELETETOKENR(MEM[P+1].HH.RH);FREENODE(P,2);GOTO 30;END;
2:FREENODE(P,2);OTHERS:CONFUSION(1150)END;GOTO 30;END{:1358};
10:BEGIN BEGIN IF MEM[MEM[P+1].HH.LH].HH.RH=0 THEN FREENODE(MEM[P+1].HH.
LH,4)ELSE MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH-1;END;
IF MEM[P+1].HH.RH<>0 THEN FLUSHNODELIS(MEM[P+1].HH.RH);END;11,9,12:;
6:FLUSHNODELIS(MEM[P+1].HH.RH);4:DELETETOKENR(MEM[P+1].INT);
7:BEGIN FLUSHNODELIS(MEM[P+1].HH.LH);FLUSHNODELIS(MEM[P+1].HH.RH);END;
5:FLUSHNODELIS(MEM[P+1].INT);{698:}14:BEGIN FREENODE(P,3);GOTO 30;END;
15:BEGIN FLUSHNODELIS(MEM[P+1].HH.LH);FLUSHNODELIS(MEM[P+1].HH.RH);
FLUSHNODELIS(MEM[P+2].HH.LH);FLUSHNODELIS(MEM[P+2].HH.RH);FREENODE(P,3);
GOTO 30;END;
16,17,18,19,20,21,22,23,24,27,26,29,28:BEGIN IF MEM[P+1].HH.RH>=2 THEN
FLUSHNODELIS(MEM[P+1].HH.LH);
IF MEM[P+2].HH.RH>=2 THEN FLUSHNODELIS(MEM[P+2].HH.LH);
IF MEM[P+3].HH.RH>=2 THEN FLUSHNODELIS(MEM[P+3].HH.LH);
IF MEM[P].HH.B0=24 THEN FREENODE(P,5)ELSE IF MEM[P].HH.B0=28 THEN
FREENODE(P,5)ELSE FREENODE(P,4);GOTO 30;END;30,31:BEGIN FREENODE(P,4);
GOTO 30;END;25:BEGIN FLUSHNODELIS(MEM[P+2].HH.LH);
FLUSHNODELIS(MEM[P+3].HH.LH);FREENODE(P,6);GOTO 30;END;{:698}
OTHERS:CONFUSION(225)END;FREENODE(P,2);30:END;P:=Q;END;END;{:202}{204:}
FUNCTION COPYNODELIST(P:HALFWORD):HALFWORD;VAR H:HALFWORD;Q:HALFWORD;
R:HALFWORD;WORDS:0..5;BEGIN H:=GETAVAIL;Q:=H;WHILE P<>0 DO BEGIN{205:}
WORDS:=1;IF(P>=HIMEMMIN)THEN R:=GETAVAIL ELSE{206:}
CASE MEM[P].HH.B0 OF 0,1,13:BEGIN R:=GETNODE(7);MEM[R+6]:=MEM[P+6];
MEM[R+5]:=MEM[P+5];MEM[R+5].HH.RH:=COPYNODELIST(MEM[P+5].HH.RH);
WORDS:=5;END;2:BEGIN R:=GETNODE(4);WORDS:=4;END;3:BEGIN R:=GETNODE(5);
MEM[R+4]:=MEM[P+4];
MEM[MEM[P+4].HH.RH].HH.RH:=MEM[MEM[P+4].HH.RH].HH.RH+1;
MEM[R+4].HH.LH:=COPYNODELIST(MEM[P+4].HH.LH);WORDS:=4;END;8:{1357:}
CASE MEM[P].HH.B1 OF 0:BEGIN R:=GETNODE(3);WORDS:=3;END;
1,3:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.RH].HH.LH:=MEM[MEM[P+1].HH.RH].HH.LH+1;WORDS:=2;END;
2:BEGIN R:=GETNODE(2);WORDS:=2;END;OTHERS:CONFUSION(1149)END{:1357};
10:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].HH.LH].HH.RH:=MEM[MEM[P+1].HH.LH].HH.RH+1;
MEM[R+1].HH.LH:=MEM[P+1].HH.LH;
MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
11,9,12:BEGIN R:=GETNODE(2);WORDS:=2;END;6:BEGIN R:=GETNODE(2);
MEM[R+1]:=MEM[P+1];MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;
7:BEGIN R:=GETNODE(2);MEM[R+1].HH.LH:=COPYNODELIST(MEM[P+1].HH.LH);
MEM[R+1].HH.RH:=COPYNODELIST(MEM[P+1].HH.RH);END;4:BEGIN R:=GETNODE(2);
MEM[MEM[P+1].INT].HH.LH:=MEM[MEM[P+1].INT].HH.LH+1;WORDS:=2;END;
5:BEGIN R:=GETNODE(2);MEM[R+1].INT:=COPYNODELIST(MEM[P+1].INT);END;
OTHERS:CONFUSION(226)END{:206};WHILE WORDS>0 DO BEGIN WORDS:=WORDS-1;
MEM[R+WORDS]:=MEM[P+WORDS];END{:205};MEM[Q].HH.RH:=R;Q:=R;
P:=MEM[P].HH.RH;END;MEM[Q].HH.RH:=0;Q:=MEM[H].HH.RH;
BEGIN MEM[H].HH.RH:=AVAIL;AVAIL:=H;DYNUSED:=DYNUSED-1;END;
COPYNODELIST:=Q;END;{:204}{211:}PROCEDURE PRINTMODE(M:INTEGER);
BEGIN IF M>0 THEN CASE M DIV(100)OF 0:PRINT(227);1:PRINT(228);
2:PRINT(229);
END ELSE IF M=0 THEN PRINT(230)ELSE CASE(-M)DIV(100)OF 0:PRINT(231);
1:PRINT(232);2:PRINT(215);END;PRINT(233);END;{:211}{216:}
PROCEDURE PUSHNEST;
BEGIN IF NESTPTR>MAXNESTSTACK THEN BEGIN MAXNESTSTACK:=NESTPTR;
IF NESTPTR=NESTSIZE THEN OVERFLOW(234,NESTSIZE);END;
NEST[NESTPTR]:=CURLIST;NESTPTR:=NESTPTR+1;CURLIST.HEADFIELD:=GETAVAIL;
CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.PGFIELD:=0;
CURLIST.MLFIELD:=LINE;END;{:216}{217:}PROCEDURE POPNEST;
BEGIN BEGIN MEM[CURLIST.HEADFIELD].HH.RH:=AVAIL;
AVAIL:=CURLIST.HEADFIELD;DYNUSED:=DYNUSED-1;END;NESTPTR:=NESTPTR-1;
CURLIST:=NEST[NESTPTR];END;{:217}{218:}PROCEDURE PRINTTOTALS;FORWARD;
PROCEDURE SHOWACTIVITI;VAR P:0..NESTSIZE;M:-201..201;A:INTEGER;
Q,R:HALFWORD;T:INTEGER;BEGIN NEST[NESTPTR]:=CURLIST;PRINTNL(210);
PRINTLN;FOR P:=NESTPTR DOWNTO 0 DO BEGIN M:=NEST[P].MODEFIELD;
A:=NEST[P].AUXFIELD;PRINTNL(235);PRINTMODE(M);PRINT(236);
PRINTINT(ABS(NEST[P].MLFIELD));IF NEST[P].MLFIELD<0 THEN PRINT(237);
IF P=0 THEN BEGIN{986:}IF 2998<>PAGETAIL THEN BEGIN PRINTNL(841);
IF OUTPUTACTIVE THEN PRINT(842);SHOWBOX(MEM[2998].HH.RH);
IF PAGECONTENTS>0 THEN BEGIN PRINTNL(843);PRINTTOTALS;PRINTNL(844);
PRINTSCALED(PAGESOFAR[0]);R:=MEM[3000].HH.RH;
WHILE R<>3000 DO BEGIN PRINTLN;PRINTESC(202);T:=0+MEM[R].HH.B1-0;
PRINTINT(T);PRINT(845);T:=XOVERN(MEM[R+3].INT,1000)*EQTB[4417+T].INT;
PRINTSCALED(T);IF MEM[R].HH.B0=1 THEN BEGIN Q:=2998;T:=0;
REPEAT Q:=MEM[Q].HH.RH;
IF(MEM[Q].HH.B0=3)AND(MEM[Q].HH.B1=MEM[R].HH.B1)THEN T:=T+1;
UNTIL Q=MEM[R+1].HH.LH;PRINT(846);PRINTINT(T);PRINT(847);END;
R:=MEM[R].HH.RH;END;END;END{:986};
IF MEM[2999].HH.RH<>0 THEN PRINTNL(238);END;
SHOWBOX(MEM[NEST[P].HEADFIELD].HH.RH);{219:}
CASE ABS(M)DIV(100)OF 0:BEGIN PRINTNL(239);
IF A<=-65536000 THEN PRINT(240)ELSE PRINTSCALED(A);
IF NEST[P].PGFIELD<>0 THEN BEGIN PRINT(241);PRINTINT(NEST[P].PGFIELD);
PRINT(242);IF NEST[P].PGFIELD<>1 THEN PRINTCHAR(115);END;END;
1:BEGIN PRINTNL(243);PRINTINT(A);END;2:IF A<>0 THEN BEGIN PRINT(244);
SHOWBOX(A);END;END{:219};END;END;{:218}{237:}
PROCEDURE PRINTPARAM(N:INTEGER);BEGIN CASE N OF 0:PRINTESC(289);
1:PRINTESC(290);2:PRINTESC(291);3:PRINTESC(292);4:PRINTESC(293);
5:PRINTESC(294);6:PRINTESC(295);7:PRINTESC(296);8:PRINTESC(297);
9:PRINTESC(298);10:PRINTESC(299);11:PRINTESC(300);12:PRINTESC(301);
13:PRINTESC(302);14:PRINTESC(303);15:PRINTESC(304);16:PRINTESC(305);
17:PRINTESC(306);18:PRINTESC(307);19:PRINTESC(308);20:PRINTESC(309);
21:PRINTESC(310);22:PRINTESC(311);23:PRINTESC(312);24:PRINTESC(313);
25:PRINTESC(314);26:PRINTESC(315);27:PRINTESC(316);28:PRINTESC(317);
29:PRINTESC(318);30:PRINTESC(319);31:PRINTESC(320);32:PRINTESC(321);
33:PRINTESC(322);34:PRINTESC(323);35:PRINTESC(324);36:PRINTESC(325);
37:PRINTESC(326);38:PRINTESC(327);39:PRINTESC(328);40:PRINTESC(329);
41:PRINTESC(330);42:PRINTESC(331);43:PRINTESC(332);44:PRINTESC(333);
45:PRINTESC(334);46:PRINTESC(335);47:PRINTESC(336);48:PRINTESC(337);
49:PRINTESC(338);OTHERS:PRINT(339)END;END;{:237}{241:}
PROCEDURE FIXDATEANDTI;VAR T:INTEGER;DATE:INTEGER;G:BOOLEAN;
BEGIN CALLI(131137,,T,T,G);DATE:=T DIV 262144;
EQTB[4387].INT:=(T MOD 262144)DIV 60;EQTB[4388].INT:=(DATE MOD 31)+1;
EQTB[4389].INT:=((DATE DIV 31)MOD 12)+1;
EQTB[4390].INT:=(DATE DIV(31*12))+1964;END;{:241}{245:}
PROCEDURE BEGINDIAGNOS;BEGIN OLDSETTING:=SELECTOR;
IF(EQTB[4396].INT<=0)AND(SELECTOR=19)THEN BEGIN SELECTOR:=SELECTOR-1;
IF HISTORY=0 THEN HISTORY:=1;END;END;
PROCEDURE ENDDIAGNOSTI(BLANKLINE:BOOLEAN);BEGIN PRINTNL(210);
IF BLANKLINE THEN PRINTLN;SELECTOR:=OLDSETTING;END;{:245}{247:}
PROCEDURE PRINTLENGTHP(N:INTEGER);BEGIN CASE N OF 0:PRINTESC(342);
1:PRINTESC(343);2:PRINTESC(344);3:PRINTESC(345);4:PRINTESC(346);
5:PRINTESC(347);6:PRINTESC(348);7:PRINTESC(349);8:PRINTESC(350);
9:PRINTESC(351);10:PRINTESC(352);11:PRINTESC(353);12:PRINTESC(354);
13:PRINTESC(355);14:PRINTESC(356);15:PRINTESC(357);16:PRINTESC(358);
17:PRINTESC(359);18:PRINTESC(360);19:PRINTESC(361);OTHERS:PRINT(362)END;
END;{:247}{252:}{298:}PROCEDURE PRINTCMDCHR(CMD:QUARTERWORD;
CHRCODE:HALFWORD);BEGIN CASE CMD OF 1:BEGIN PRINT(419);
PRINTASCII(CHRCODE);END;2:BEGIN PRINT(420);PRINTASCII(CHRCODE);END;
3:BEGIN PRINT(421);PRINTASCII(CHRCODE);END;6:BEGIN PRINT(422);
PRINTASCII(CHRCODE);END;7:BEGIN PRINT(423);PRINTASCII(CHRCODE);END;
8:BEGIN PRINT(424);PRINTASCII(CHRCODE);END;9:PRINT(425);
10:BEGIN PRINT(426);PRINTASCII(CHRCODE);END;11:BEGIN PRINT(427);
PRINTASCII(CHRCODE);END;12:BEGIN PRINT(428);PRINTASCII(CHRCODE);END;
{227:}
74,75:IF CHRCODE<2644 THEN PRINTSKIPPAR(CHRCODE-2626)ELSE IF CHRCODE<
2900 THEN BEGIN PRINTESC(264);PRINTINT(CHRCODE-2644);
END ELSE BEGIN PRINTESC(265);PRINTINT(CHRCODE-2900);END;{:227}{231:}
71:IF CHRCODE>=3166 THEN BEGIN PRINTESC(276);PRINTINT(CHRCODE-3166);
END ELSE CASE CHRCODE OF 3157:PRINTESC(267);3158:PRINTESC(268);
3159:PRINTESC(269);3160:PRINTESC(270);3161:PRINTESC(271);
3162:PRINTESC(272);3163:PRINTESC(273);3164:PRINTESC(274);
OTHERS:PRINTESC(275)END;{:231}{239:}
72:IF CHRCODE<4417 THEN PRINTPARAM(CHRCODE-4367)ELSE BEGIN PRINTESC(340)
;PRINTINT(CHRCODE-4417);END;{:239}{249:}
73:IF CHRCODE<4821 THEN PRINTLENGTHP(CHRCODE-4801)ELSE BEGIN PRINTESC(
363);PRINTINT(CHRCODE-4821);END;{:249}{266:}45:PRINTESC(371);
89:PRINTESC(372);40:PRINTESC(373);41:PRINTESC(374);76:PRINTESC(382);
61:PRINTESC(375);42:PRINTESC(393);16:PRINTESC(376);106:PRINTESC(367);
87:PRINTESC(381);15:PRINTESC(377);91:PRINTESC(378);66:PRINTESC(368);
62:PRINTESC(379);64:PRINTESC(32);101:PRINTESC(380);32:PRINTESC(383);
36:PRINTESC(384);39:PRINTESC(385);37:PRINTESC(202);44:PRINTESC(47);
18:PRINTESC(223);46:PRINTESC(386);17:PRINTESC(387);54:PRINTESC(388);
90:PRINTESC(389);34:PRINTESC(390);102:PRINTESC(391);55:PRINTESC(207);
63:PRINTESC(392);65:PRINTESC(395);95:PRINTESC(396);0:PRINTESC(397);
97:PRINTESC(398);79:PRINTESC(394);83:PRINTESC(277);108:PRINTESC(399);
70:PRINTESC(276);38:PRINTESC(224);33:PRINTESC(400);56:PRINTESC(401);
35:PRINTESC(402);{:266}{335:}13:PRINTESC(460);{:335}{377:}
103:IF CHRCODE=0 THEN PRINTESC(494)ELSE PRINTESC(495);{:377}{385:}
109:CASE CHRCODE OF 1:PRINTESC(497);2:PRINTESC(498);3:PRINTESC(499);
4:PRINTESC(500);OTHERS:PRINTESC(496)END;{:385}{412:}
88:IF CHRCODE=0 THEN PRINTESC(340)ELSE IF CHRCODE=1 THEN PRINTESC(363)
ELSE IF CHRCODE=2 THEN PRINTESC(264)ELSE PRINTESC(265);{:412}{417:}
78:IF CHRCODE=1 THEN PRINTESC(535)ELSE PRINTESC(534);
81:IF CHRCODE=0 THEN PRINTESC(536)ELSE PRINTESC(537);
82:IF CHRCODE=1 THEN PRINTESC(538)ELSE IF CHRCODE=3 THEN PRINTESC(539)
ELSE PRINTESC(540);
69:IF CHRCODE=0 THEN PRINTESC(541)ELSE IF CHRCODE=1 THEN PRINTESC(542)
ELSE PRINTESC(543);{:417}{469:}107:CASE CHRCODE OF 0:PRINTESC(602);
1:PRINTESC(603);2:PRINTESC(604);3:PRINTESC(605);4:PRINTESC(606);
OTHERS:PRINTESC(607)END;{:469}{488:}104:CASE CHRCODE OF 1:PRINTESC(624);
2:PRINTESC(625);3:PRINTESC(626);4:PRINTESC(627);5:PRINTESC(628);
6:PRINTESC(629);7:PRINTESC(630);8:PRINTESC(631);9:PRINTESC(632);
10:PRINTESC(633);11:PRINTESC(634);12:PRINTESC(635);13:PRINTESC(636);
14:PRINTESC(637);15:PRINTESC(638);16:PRINTESC(639);
OTHERS:PRINTESC(623)END;{:488}{492:}
105:IF CHRCODE=2 THEN PRINTESC(640)ELSE IF CHRCODE=4 THEN PRINTESC(641)
ELSE PRINTESC(642);{:492}{781:}
4:IF CHRCODE=128 THEN PRINTESC(764)ELSE BEGIN PRINT(768);
PRINTASCII(CHRCODE);END;
5:IF CHRCODE=129 THEN PRINTESC(765)ELSE PRINTESC(766);{:781}{984:}
80:CASE CHRCODE OF 0:PRINTESC(831);1:PRINTESC(832);2:PRINTESC(833);
3:PRINTESC(834);4:PRINTESC(835);5:PRINTESC(836);6:PRINTESC(837);
OTHERS:PRINTESC(838)END;{:984}{1053:}
14:IF CHRCODE=1 THEN PRINTESC(887)ELSE PRINTESC(886);{:1053}{1059:}
26:CASE CHRCODE OF 4:PRINTESC(888);0:PRINTESC(889);1:PRINTESC(890);
2:PRINTESC(891);OTHERS:PRINTESC(892)END;
27:CASE CHRCODE OF 4:PRINTESC(893);0:PRINTESC(894);1:PRINTESC(895);
2:PRINTESC(896);OTHERS:PRINTESC(897)END;28:PRINTESC(208);
29:PRINTESC(212);30:PRINTESC(214);{:1059}{1072:}
21:IF CHRCODE=1 THEN PRINTESC(915)ELSE PRINTESC(916);
22:IF CHRCODE=1 THEN PRINTESC(917)ELSE PRINTESC(918);
20:CASE CHRCODE OF 0:PRINTESC(278);1:PRINTESC(919);2:PRINTESC(920);
3:PRINTESC(826);4:PRINTESC(921);5:PRINTESC(828);OTHERS:PRINTESC(922)END;
31:IF CHRCODE=100 THEN PRINTESC(924)ELSE IF CHRCODE=101 THEN PRINTESC(
925)ELSE IF CHRCODE=102 THEN PRINTESC(926)ELSE PRINTESC(923);{:1072}
{1089:}43:IF CHRCODE=0 THEN PRINTESC(942)ELSE PRINTESC(941);{:1089}
{1108:}
25:IF CHRCODE=10 THEN PRINTESC(953)ELSE IF CHRCODE=11 THEN PRINTESC(952)
ELSE PRINTESC(951);23:IF CHRCODE=1 THEN PRINTESC(955)ELSE PRINTESC(954);
24:IF CHRCODE=1 THEN PRINTESC(957)ELSE PRINTESC(956);{:1108}{1115:}
47:IF CHRCODE=1 THEN PRINTESC(45)ELSE PRINTESC(221);{:1115}{1143:}
48:IF CHRCODE=1 THEN PRINTESC(989)ELSE PRINTESC(988);{:1143}{1157:}
50:CASE CHRCODE OF 16:PRINTESC(732);17:PRINTESC(733);18:PRINTESC(734);
19:PRINTESC(735);20:PRINTESC(736);21:PRINTESC(737);22:PRINTESC(738);
23:PRINTESC(739);26:PRINTESC(741);OTHERS:PRINTESC(740)END;
51:IF CHRCODE=1 THEN PRINTESC(744)ELSE IF CHRCODE=2 THEN PRINTESC(745)
ELSE PRINTESC(990);{:1157}{1170:}53:PRINTSTYLE(CHRCODE);{:1170}{1179:}
52:CASE CHRCODE OF 1:PRINTESC(1009);2:PRINTESC(1010);3:PRINTESC(1011);
4:PRINTESC(1012);5:PRINTESC(1013);OTHERS:PRINTESC(1008)END;{:1179}
{1189:}49:IF CHRCODE=30 THEN PRINTESC(742)ELSE PRINTESC(743);{:1189}
{1209:}
92:IF CHRCODE=1 THEN PRINTESC(1032)ELSE IF CHRCODE=2 THEN PRINTESC(1033)
ELSE PRINTESC(1034);
96:IF CHRCODE=0 THEN PRINTESC(1035)ELSE IF CHRCODE=1 THEN PRINTESC(1036)
ELSE IF CHRCODE=2 THEN PRINTESC(1037)ELSE PRINTESC(1038);{:1209}{1220:}
93:IF CHRCODE<>0 THEN PRINTESC(1053)ELSE PRINTESC(1052);{:1220}{1223:}
94:CASE CHRCODE OF 0:PRINTESC(1054);1:PRINTESC(1055);2:PRINTESC(1056);
3:PRINTESC(1057);4:PRINTESC(1058);5:PRINTESC(1059);
OTHERS:PRINTESC(1060)END;67:BEGIN PRINTESC(376);PRINTHEX(CHRCODE);END;
68:BEGIN PRINTESC(387);PRINTHEX(CHRCODE);END;{:1223}{1231:}
84:IF CHRCODE=3727 THEN PRINTESC(284)ELSE IF CHRCODE=4239 THEN PRINTESC(
288)ELSE IF CHRCODE=3855 THEN PRINTESC(285)ELSE IF CHRCODE=3983 THEN
PRINTESC(286)ELSE IF CHRCODE=4111 THEN PRINTESC(287)ELSE PRINTESC(341);
85:PRINTSIZE(CHRCODE-3679);{:1231}{1251:}
98:IF CHRCODE=1 THEN PRINTESC(816)ELSE PRINTESC(806);{:1251}{1255:}
77:IF CHRCODE=0 THEN PRINTESC(1076)ELSE PRINTESC(1077);{:1255}{1261:}
86:BEGIN PRINT(1085);PRINT(FONTNAME[CHRCODE]);
IF FONTSIZE[CHRCODE]<>FONTDSIZE[CHRCODE]THEN BEGIN PRINT(608);
PRINTSCALED(FONTSIZE[CHRCODE]);PRINT(266);END;END;{:1261}{1263:}
99:CASE CHRCODE OF 0:PRINTESC(146);1:PRINTESC(147);2:PRINTESC(148);
OTHERS:PRINTESC(1086)END;{:1263}{1273:}
60:IF CHRCODE=0 THEN PRINTESC(1088)ELSE PRINTESC(1087);{:1273}{1278:}
58:IF CHRCODE=0 THEN PRINTESC(1089)ELSE PRINTESC(1090);{:1278}{1287:}
57:IF CHRCODE=3855 THEN PRINTESC(1096)ELSE PRINTESC(1097);{:1287}{1292:}
19:CASE CHRCODE OF 1:PRINTESC(1099);2:PRINTESC(1100);3:PRINTESC(1101);
OTHERS:PRINTESC(1098)END;{:1292}{1295:}100:PRINT(1108);110:PRINT(1109);
111:PRINTESC(1110);112:PRINTESC(1111);113:BEGIN PRINTESC(1032);
PRINTESC(1111);END;114:PRINTESC(1112);{:1295}{1346:}
59:CASE CHRCODE OF 0:PRINTESC(1142);1:PRINTESC(458);2:PRINTESC(1143);
3:PRINTESC(1144);4:PRINTESC(1145);OTHERS:PRINT(1146)END;{:1346}
OTHERS:PRINT(429)END;END;{:298}PROCEDURE SHOWEQTB(N:HALFWORD);
BEGIN IF N<1 THEN PRINTCHAR(63)ELSE IF N<2626 THEN{223:}
BEGIN SPRINTCS(N);PRINTCHAR(61);
PRINTCMDCHR(EQTB[N].HH.B0,EQTB[N].HH.RH);
IF EQTB[N].HH.B0>=110 THEN BEGIN PRINTCHAR(58);
SHOWTOKENLIS(MEM[EQTB[N].HH.RH].HH.RH,0,32);END;END{:223}
ELSE IF N<3156 THEN{229:}IF N<2644 THEN BEGIN PRINTSKIPPAR(N-2626);
PRINTCHAR(61);
IF N<2641 THEN PRINTSPEC(EQTB[N].HH.RH,266)ELSE PRINTSPEC(EQTB[N].HH.RH,
209);END ELSE IF N<2900 THEN BEGIN PRINTESC(264);PRINTINT(N-2644);
PRINTCHAR(61);PRINTSPEC(EQTB[N].HH.RH,266);END ELSE BEGIN PRINTESC(265);
PRINTINT(N-2900);PRINTCHAR(61);PRINTSPEC(EQTB[N].HH.RH,209);END{:229}
ELSE IF N<4367 THEN{233:}IF N=3156 THEN BEGIN PRINTESC(277);
PRINTCHAR(61);
IF EQTB[3156].HH.RH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[EQTB[3156].HH.
RH].HH.LH);END ELSE IF N<3166 THEN BEGIN PRINTCMDCHR(71,N);
PRINTCHAR(61);
IF EQTB[N].HH.RH<>0 THEN SHOWTOKENLIS(MEM[EQTB[N].HH.RH].HH.RH,0,32);
END ELSE IF N<3422 THEN BEGIN PRINTESC(276);PRINTINT(N-3166);
PRINTCHAR(61);
IF EQTB[N].HH.RH<>0 THEN SHOWTOKENLIS(MEM[EQTB[N].HH.RH].HH.RH,0,32);
END ELSE IF N<3678 THEN BEGIN PRINTESC(278);PRINTINT(N-3422);
PRINTCHAR(61);
IF EQTB[N].HH.RH=0 THEN PRINT(279)ELSE BEGIN DEPTHTHRESHO:=0;
BREADTHMAX:=1;SHOWNODELIST(EQTB[N].HH.RH);END;
END ELSE IF N<3727 THEN{234:}
BEGIN IF N=3678 THEN PRINT(280)ELSE IF N<3695 THEN BEGIN PRINTESC(281);
PRINTINT(N-3679);END ELSE IF N<3711 THEN BEGIN PRINTESC(282);
PRINTINT(N-3695);END ELSE BEGIN PRINTESC(283);PRINTINT(N-3711);END;
PRINTCHAR(61);PRINTESC(HASH[2368+EQTB[N].HH.RH].RH);END{:234}ELSE{235:}
IF N<4239 THEN BEGIN IF N<3855 THEN BEGIN PRINTESC(284);
PRINTINT(N-3727);END ELSE IF N<3983 THEN BEGIN PRINTESC(285);
PRINTINT(N-3855);END ELSE IF N<4111 THEN BEGIN PRINTESC(286);
PRINTINT(N-3983);END ELSE BEGIN PRINTESC(287);PRINTINT(N-4111);END;
PRINTCHAR(61);PRINTINT(EQTB[N].HH.RH);END ELSE BEGIN PRINTESC(288);
PRINTINT(N-4239);PRINTCHAR(61);PRINTINT(0+EQTB[N].HH.RH-0);END{:235}
{:233}ELSE IF N<4801 THEN{242:}
BEGIN IF N<4417 THEN PRINTPARAM(N-4367)ELSE IF N<4673 THEN BEGIN
PRINTESC(340);PRINTINT(N-4417);END ELSE BEGIN PRINTESC(341);
PRINTINT(N-4673);END;PRINTCHAR(61);PRINTINT(EQTB[N].INT);END{:242}
ELSE IF N<=5076 THEN{251:}
BEGIN IF N<4821 THEN PRINTLENGTHP(N-4801)ELSE BEGIN PRINTESC(363);
PRINTINT(N-4821);END;PRINTCHAR(61);PRINTSCALED(EQTB[N].INT);PRINT(266);
END{:251}ELSE PRINTCHAR(63);END;{:252}{259:}
FUNCTION IDLOOKUP(J,L:INTEGER):HALFWORD;LABEL 40;VAR H:INTEGER;
P:HALFWORD;K:HALFWORD;BEGIN{261:}H:=BUFFER[J];
FOR K:=J+1 TO J+L-1 DO BEGIN H:=H+H+BUFFER[K];
WHILE H>=1777 DO H:=H-1777;END{:261};P:=H+258;
WHILE TRUE DO BEGIN IF HASH[P].RH>0 THEN IF(STRSTART[HASH[P].RH+1]-
STRSTART[HASH[P].RH])=L THEN IF STREQBUF(HASH[P].RH,J)THEN GOTO 40;
IF HASH[P].LH=0 THEN BEGIN IF NONEWCONTROL THEN P:=2625 ELSE{260:}
BEGIN IF HASH[P].RH>0 THEN BEGIN REPEAT IF(HASHUSED=258)THEN OVERFLOW(
366,2100);HASHUSED:=HASHUSED-1;UNTIL HASH[HASHUSED].RH=0;
HASH[P].LH:=HASHUSED;P:=HASHUSED;END;
BEGIN IF POOLPTR+L>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR);END;
FOR K:=J TO J+L-1 DO BEGIN STRPOOL[POOLPTR]:=BUFFER[K];
POOLPTR:=POOLPTR+1;END;HASH[P].RH:=MAKESTRING;CSCOUNT:=CSCOUNT+1;
END{:260};GOTO 40;END;P:=HASH[P].LH;END;40:IDLOOKUP:=P;END;{:259}{264:}
PROCEDURE PRIMITIVE(S:STRNUMBER;C:QUARTERWORD;O:HALFWORD);
VAR K:POOLPOINTER;J:SMALLNUMBER;L:SMALLNUMBER;
BEGIN IF S<128 THEN CURVAL:=S+129 ELSE BEGIN K:=STRSTART[S];
L:=STRSTART[S+1]-K;FOR J:=0 TO L-1 DO BUFFER[J]:=STRPOOL[K+J];
CURVAL:=IDLOOKUP(0,L);BEGIN STRPTR:=STRPTR-1;POOLPTR:=STRSTART[STRPTR];
END;HASH[CURVAL].RH:=S;END;EQTB[CURVAL].HH.B1:=1;EQTB[CURVAL].HH.B0:=C;
EQTB[CURVAL].HH.RH:=O;END;{:264}{274:}
PROCEDURE NEWSAVELEVEL(C:GROUPCODE);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(403,SAVESIZE);END;
SAVESTACK[SAVEPTR].HH.B0:=3;SAVESTACK[SAVEPTR].HH.B1:=CURGROUP;
SAVESTACK[SAVEPTR].HH.RH:=CURBOUNDARY;
IF CURLEVEL=255 THEN OVERFLOW(404,255);CURBOUNDARY:=SAVEPTR;
CURLEVEL:=CURLEVEL+1;SAVEPTR:=SAVEPTR+1;CURGROUP:=C;END;{:274}{275:}
PROCEDURE EQDESTROY(W:MEMORYWORD);VAR Q:HALFWORD;
BEGIN CASE W.HH.B0 OF 110,111,112,113:DELETETOKENR(W.HH.RH);
116:DELETEGLUERE(W.HH.RH);117:BEGIN Q:=W.HH.RH;
IF Q<>0 THEN FREENODE(Q,MEM[Q].HH.LH+MEM[Q].HH.LH+1);END;
118:FLUSHNODELIS(W.HH.RH);OTHERS:END;END;{:275}{276:}
PROCEDURE EQSAVE(P:HALFWORD;L:QUARTERWORD);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(403,SAVESIZE);END;
IF L=0 THEN SAVESTACK[SAVEPTR].HH.B0:=1 ELSE BEGIN SAVESTACK[SAVEPTR]:=
EQTB[P];SAVEPTR:=SAVEPTR+1;SAVESTACK[SAVEPTR].HH.B0:=0;END;
SAVESTACK[SAVEPTR].HH.B1:=L;SAVESTACK[SAVEPTR].HH.RH:=P;
SAVEPTR:=SAVEPTR+1;END;{:276}{277:}PROCEDURE EQDEFINE(P:HALFWORD;
T:QUARTERWORD;E:HALFWORD);
BEGIN IF EQTB[P].HH.B1=CURLEVEL THEN EQDESTROY(EQTB[P])ELSE IF CURLEVEL>
1 THEN EQSAVE(P,EQTB[P].HH.B1);EQTB[P].HH.B1:=CURLEVEL;EQTB[P].HH.B0:=T;
EQTB[P].HH.RH:=E;END;{:277}{278:}PROCEDURE EQWORDDEFINE(P:HALFWORD;
W:INTEGER);
BEGIN IF XEQLEVEL[P]<>CURLEVEL THEN BEGIN EQSAVE(P,XEQLEVEL[P]);
XEQLEVEL[P]:=CURLEVEL;END;EQTB[P].INT:=W;END;{:278}{279:}
PROCEDURE GEQDEFINE(P:HALFWORD;T:QUARTERWORD;E:HALFWORD);
BEGIN EQDESTROY(EQTB[P]);EQTB[P].HH.B1:=1;EQTB[P].HH.B0:=T;
EQTB[P].HH.RH:=E;END;PROCEDURE GEQWORDDEFIN(P:HALFWORD;W:INTEGER);
BEGIN EQTB[P].INT:=W;XEQLEVEL[P]:=1;END;{:279}{280:}
PROCEDURE SAVEFORAFTER(T:HALFWORD);
BEGIN IF SAVEPTR>MAXSAVESTACK THEN BEGIN MAXSAVESTACK:=SAVEPTR;
IF MAXSAVESTACK>SAVESIZE-6 THEN OVERFLOW(403,SAVESIZE);END;
SAVESTACK[SAVEPTR].HH.B0:=2;SAVESTACK[SAVEPTR].HH.B1:=0;
SAVESTACK[SAVEPTR].HH.RH:=T;SAVEPTR:=SAVEPTR+1;END;{:280}{281:}{284:}
PROCEDURE RESTORETRACE(P:HALFWORD;S:STRNUMBER);BEGIN BEGINDIAGNOS;
PRINTCHAR(123);PRINT(S);PRINTCHAR(32);SHOWEQTB(P);PRINTCHAR(125);
ENDDIAGNOSTI(FALSE);END;{:284}PROCEDURE BACKINPUT;FORWARD;
PROCEDURE UNSAVE;LABEL 30;VAR P:HALFWORD;L:QUARTERWORD;T:HALFWORD;
BEGIN IF CURLEVEL>1 THEN BEGIN CURLEVEL:=CURLEVEL-1;{282:}
WHILE TRUE DO BEGIN SAVEPTR:=SAVEPTR-1;
IF SAVESTACK[SAVEPTR].HH.B0=3 THEN GOTO 30;P:=SAVESTACK[SAVEPTR].HH.RH;
IF SAVESTACK[SAVEPTR].HH.B0=2 THEN{326:}BEGIN T:=CURTOK;CURTOK:=P;
BACKINPUT;CURTOK:=T;END{:326}
ELSE BEGIN IF SAVESTACK[SAVEPTR].HH.B0=0 THEN BEGIN L:=SAVESTACK[SAVEPTR
].HH.B1;SAVEPTR:=SAVEPTR-1;END ELSE SAVESTACK[SAVEPTR]:=EQTB[2625];
{283:}
IF P<4367 THEN IF EQTB[P].HH.B1=1 THEN BEGIN EQDESTROY(SAVESTACK[SAVEPTR
]);IF EQTB[4404].INT>0 THEN RESTORETRACE(P,406);
END ELSE BEGIN EQDESTROY(EQTB[P]);EQTB[P]:=SAVESTACK[SAVEPTR];
IF EQTB[4404].INT>0 THEN RESTORETRACE(P,407);
END ELSE IF XEQLEVEL[P]<>1 THEN BEGIN EQTB[P]:=SAVESTACK[SAVEPTR];
XEQLEVEL[P]:=L;IF EQTB[4404].INT>0 THEN RESTORETRACE(P,407);
END ELSE BEGIN IF EQTB[4404].INT>0 THEN RESTORETRACE(P,406);END{:283};
END;END;30:CURGROUP:=SAVESTACK[SAVEPTR].HH.B1;
CURBOUNDARY:=SAVESTACK[SAVEPTR].HH.RH{:282};END ELSE CONFUSION(405);END;
{:281}{288:}PROCEDURE PREPAREMAG;
BEGIN IF(MAGSET>0)AND(EQTB[4384].INT<>MAGSET)THEN BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(409);END;
PRINTINT(EQTB[4384].INT);PRINT(410);PRINTNL(411);BEGIN HELPPTR:=2;
HELPLINE[1]:=412;HELPLINE[0]:=413;END;INTERROR(MAGSET);
GEQWORDDEFIN(4384,MAGSET);END;
IF(EQTB[4384].INT<=0)OR(EQTB[4384].INT>32768)THEN BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(414);END;
BEGIN HELPPTR:=1;HELPLINE[0]:=415;END;INTERROR(EQTB[4384].INT);
GEQWORDDEFIN(4384,1000);END;MAGSET:=EQTB[4384].INT;END;{:288}{295:}
PROCEDURE TOKENSHOW(P:HALFWORD);
BEGIN IF P<>0 THEN SHOWTOKENLIS(MEM[P].HH.RH,0,1000);END;{:295}{296:}
PROCEDURE PRINTMEANING;BEGIN PRINTCMDCHR(CURCMD,CURCHR);
IF CURCMD>=110 THEN BEGIN PRINTCHAR(58);PRINTLN;TOKENSHOW(CURCHR);
END ELSE IF CURCMD=109 THEN BEGIN PRINTCHAR(58);PRINTLN;
TOKENSHOW(CURMARK[CURCHR]);END;END;{:296}{299:}PROCEDURE SHOWCURCMDCH;
BEGIN BEGINDIAGNOS;PRINTNL(123);
IF CURLIST.MODEFIELD<>SHOWNMODE THEN BEGIN PRINTMODE(CURLIST.MODEFIELD);
PRINT(430);SHOWNMODE:=CURLIST.MODEFIELD;END;PRINTCMDCHR(CURCMD,CURCHR);
PRINTCHAR(125);ENDDIAGNOSTI(FALSE);END;{:299}{311:}
PROCEDURE SHOWCONTEXT;LABEL 30;VAR OLDSETTING:0..21;{315:}I:0..BUFSIZE;
J:0..BUFSIZE;L:0..HALFERRORLIN;M:INTEGER;N:0..ERRORLINE;P:INTEGER;
Q:INTEGER;{:315}BEGIN BASEPTR:=INPUTPTR;INPUTSTACK[BASEPTR]:=CURINPUT;
WHILE TRUE DO BEGIN CURINPUT:=INPUTSTACK[BASEPTR];{312:}
IF(BASEPTR=INPUTPTR)OR(CURINPUT.STATEFIELD<>0)OR(CURINPUT.INDEXFIELD<>3)
OR(CURINPUT.LOCFIELD<>0)THEN BEGIN TALLY:=0;OLDSETTING:=SELECTOR;
IF CURINPUT.STATEFIELD<>0 THEN BEGIN{313:}
IF CURINPUT.NAMEFIELD<=17 THEN IF(CURINPUT.NAMEFIELD=0)THEN IF BASEPTR=0
THEN PRINTNL(436)ELSE PRINTNL(437)ELSE BEGIN PRINTNL(438);
IF CURINPUT.NAMEFIELD=17 THEN PRINTCHAR(42)ELSE PRINTINT(CURINPUT.
NAMEFIELD-1);PRINTCHAR(62);
END ELSE BEGIN IF PAGE>1 THEN BEGIN PRINTNL(439);PRINTINT(PAGE);
PRINT(440);END ELSE PRINTNL(441);PRINTINT(LINE);END;PRINTCHAR(32){:313};
{318:}BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;TRICKCOUNT:=1000000;END;
IF BUFFER[CURINPUT.LIMITFIELD]=EQTB[4415].INT THEN J:=CURINPUT.
LIMITFIELD ELSE J:=CURINPUT.LIMITFIELD+1;
IF J>0 THEN FOR I:=CURINPUT.STARTFIELD TO J-1 DO BEGIN IF I=CURINPUT.
LOCFIELD THEN BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLIN;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;PRINT(BUFFER[I]);
END{:318};END ELSE BEGIN{314:}
CASE CURINPUT.INDEXFIELD OF 0:PRINTNL(442);1,2:PRINTNL(443);
3:IF CURINPUT.LOCFIELD=0 THEN PRINTNL(444)ELSE PRINTNL(445);
4:PRINTNL(446);5:BEGIN PRINTLN;PRINTCS(CURINPUT.NAMEFIELD);END;
6:PRINTNL(447);7:PRINTNL(448);8:PRINTNL(449);9:PRINTNL(450);
10:PRINTNL(451);11:PRINTNL(452);12:PRINTNL(453);13:PRINTNL(454);
14:PRINTNL(455);15:PRINTNL(456);OTHERS:PRINTNL(63)END{:314};{319:}
BEGIN L:=TALLY;TALLY:=0;SELECTOR:=20;TRICKCOUNT:=1000000;END;
IF CURINPUT.INDEXFIELD<5 THEN SHOWTOKENLIS(CURINPUT.STARTFIELD,CURINPUT.
LOCFIELD,100000)ELSE SHOWTOKENLIS(MEM[CURINPUT.STARTFIELD].HH.RH,
CURINPUT.LOCFIELD,100000){:319};END;SELECTOR:=OLDSETTING;{317:}
IF TRICKCOUNT=1000000 THEN BEGIN FIRSTCOUNT:=TALLY;
TRICKCOUNT:=TALLY+1+ERRORLINE-HALFERRORLIN;
IF TRICKCOUNT<ERRORLINE THEN TRICKCOUNT:=ERRORLINE;END;
IF TALLY<TRICKCOUNT THEN M:=TALLY-FIRSTCOUNT ELSE M:=TRICKCOUNT-
FIRSTCOUNT;IF L+FIRSTCOUNT<=HALFERRORLIN THEN BEGIN P:=0;
N:=L+FIRSTCOUNT;END ELSE BEGIN PRINT(149);
P:=L+FIRSTCOUNT-HALFERRORLIN+3;N:=HALFERRORLIN;END;
FOR Q:=P TO FIRSTCOUNT-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
PRINTLN;FOR Q:=1 TO N DO PRINTCHAR(32);
IF M+N<=ERRORLINE THEN P:=FIRSTCOUNT+M ELSE P:=FIRSTCOUNT+(ERRORLINE-N-3
);FOR Q:=FIRSTCOUNT TO P-1 DO PRINTCHAR(TRICKBUF[Q MOD ERRORLINE]);
IF M+N>ERRORLINE THEN PRINT(149){:317};END{:312};
IF(CURINPUT.STATEFIELD<>0)THEN IF(CURINPUT.NAMEFIELD>17)OR(BASEPTR=0)
THEN GOTO 30;BASEPTR:=BASEPTR-1;END;30:CURINPUT:=INPUTSTACK[INPUTPTR];
END;{:311}{323:}PROCEDURE BEGINTOKENLI(P:HALFWORD;T:QUARTERWORD);
BEGIN BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(457,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=T;
IF T>=5 THEN BEGIN MEM[P].HH.LH:=MEM[P].HH.LH+1;
IF T=5 THEN CURINPUT.LIMITFIELD:=PARAMPTR ELSE BEGIN CURINPUT.LOCFIELD:=
MEM[P].HH.RH;IF EQTB[4397].INT>1 THEN BEGIN BEGINDIAGNOS;PRINTNL(210);
CASE T OF 14:PRINTESC(223);15:PRINTESC(458);
OTHERS:PRINTCMDCHR(71,T+3151)END;PRINT(418);TOKENSHOW(P);
ENDDIAGNOSTI(FALSE);END;END;END ELSE CURINPUT.LOCFIELD:=P;END;{:323}
{324:}PROCEDURE ENDTOKENLIST;
BEGIN IF CURINPUT.INDEXFIELD>=3 THEN BEGIN IF CURINPUT.INDEXFIELD<=4
THEN FLUSHLIST(CURINPUT.STARTFIELD)ELSE BEGIN DELETETOKENR(CURINPUT.
STARTFIELD);
IF CURINPUT.INDEXFIELD=5 THEN WHILE PARAMPTR>CURINPUT.LIMITFIELD DO
BEGIN PARAMPTR:=PARAMPTR-1;FLUSHLIST(PARAMSTACK[PARAMPTR]);END;END;
END ELSE IF CURINPUT.INDEXFIELD=1 THEN ALIGNSTATE:=0;
BEGIN INPUTPTR:=INPUTPTR-1;CURINPUT:=INPUTSTACK[INPUTPTR];END;
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINST;END;END;{:324}{325:}
PROCEDURE BACKINPUT;VAR P:HALFWORD;
BEGIN WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)DO
ENDTOKENLIST;P:=GETAVAIL;MEM[P].HH.LH:=CURTOK;
IF CURTOK<768 THEN IF CURTOK<512 THEN ALIGNSTATE:=ALIGNSTATE-1 ELSE
ALIGNSTATE:=ALIGNSTATE+1;
BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(457,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
CURINPUT.STATEFIELD:=0;CURINPUT.STARTFIELD:=P;CURINPUT.INDEXFIELD:=3;
CURINPUT.LOCFIELD:=P;END;{:325}{327:}PROCEDURE BACKERROR;
BEGIN OKTOINTERRUP:=FALSE;BACKINPUT;OKTOINTERRUP:=TRUE;ERROR;END;
PROCEDURE INSERROR;BEGIN OKTOINTERRUP:=FALSE;BACKINPUT;
CURINPUT.INDEXFIELD:=4;OKTOINTERRUP:=TRUE;ERROR;END;{:327}{328:}
PROCEDURE BEGINFILEREA;
BEGIN IF INOPEN=MAXINOPEN THEN OVERFLOW(459,MAXINOPEN);
IF FIRST=BUFSIZE THEN OVERFLOW(128,BUFSIZE);INOPEN:=INOPEN+1;
BEGIN IF INPUTPTR>MAXINSTACK THEN BEGIN MAXINSTACK:=INPUTPTR;
IF INPUTPTR=STACKSIZE THEN OVERFLOW(457,STACKSIZE);END;
INPUTSTACK[INPUTPTR]:=CURINPUT;INPUTPTR:=INPUTPTR+1;END;
CURINPUT.INDEXFIELD:=INOPEN;LINESTACK[CURINPUT.INDEXFIELD]:=LINE;
CURINPUT.STARTFIELD:=FIRST;CURINPUT.STATEFIELD:=1;
PAGESTACK[CURINPUT.INDEXFIELD]:=PAGE;CURINPUT.NAMEFIELD:=0;END;{:328}
{329:}PROCEDURE ENDFILEREADI;BEGIN FIRST:=CURINPUT.STARTFIELD;
PAGE:=PAGESTACK[CURINPUT.INDEXFIELD];
LINE:=LINESTACK[CURINPUT.INDEXFIELD];
IF CURINPUT.NAMEFIELD>17 THEN ACLOSE(INPUTFILE[CURINPUT.INDEXFIELD]);
BEGIN INPUTPTR:=INPUTPTR-1;CURINPUT:=INPUTSTACK[INPUTPTR];END;
INOPEN:=INOPEN-1;END;{:329}{330:}PROCEDURE CLEARFORERRO;
BEGIN WHILE(CURINPUT.STATEFIELD<>0)AND(CURINPUT.NAMEFIELD=0)AND(INPUTPTR
>0)AND(CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD)DO ENDFILEREADI;PRINTLN;
BREAKIN(TTY,TRUE);END;{:330}{336:}PROCEDURE CHECKOUTERVA;VAR P:HALFWORD;
Q:HALFWORD;BEGIN IF SCANNERSTATU<>0 THEN BEGIN DELETIONSALL:=FALSE;
{337:}
IF CURCS<>0 THEN BEGIN IF(CURINPUT.STATEFIELD=0)OR(CURINPUT.NAMEFIELD<1)
OR(CURINPUT.NAMEFIELD>17)THEN BEGIN P:=GETAVAIL;
MEM[P].HH.LH:=4096+CURCS;BEGINTOKENLI(P,3);END;CURCMD:=10;CURCHR:=32;
END{:337};IF SCANNERSTATU>1 THEN{338:}BEGIN RUNAWAY;
IF CURCS=0 THEN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(468);END ELSE BEGIN CURCS:=0;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(469);END;END;PRINT(470);{339:}P:=GETAVAIL;
CASE SCANNERSTATU OF 2:BEGIN PRINT(432);MEM[P].HH.LH:=637;END;
3:BEGIN PRINT(476);MEM[P].HH.LH:=PARTOKEN;LONGSTATE:=112;END;
4:BEGIN PRINT(434);MEM[P].HH.LH:=637;Q:=P;P:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[P].HH.LH:=6455;ALIGNSTATE:=-1000000;END;5:BEGIN PRINT(435);
MEM[P].HH.LH:=637;END;END;BEGINTOKENLI(P,4){:339};PRINT(471);
SPRINTCS(WARNINGINDEX);BEGIN HELPPTR:=4;HELPLINE[3]:=472;
HELPLINE[2]:=473;HELPLINE[1]:=474;HELPLINE[0]:=475;END;ERROR;END{:338}
ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(461);END;PRINTCMDCHR(104,CURIF);PRINT(462);
PRINTINT(SKIPLINE);IF SKIPPAGE>1 THEN BEGIN PRINT(463);
PRINTINT(SKIPPAGE);END;BEGIN HELPPTR:=3;HELPLINE[2]:=464;
HELPLINE[1]:=465;HELPLINE[0]:=466;END;
IF CURCS<>0 THEN CURCS:=0 ELSE HELPLINE[2]:=467;CURTOK:=6458;INSERROR;
END;DELETIONSALL:=TRUE;END;END;{:336}{340:}PROCEDURE FIRMUPTHELIN;
FORWARD;{:340}{341:}PROCEDURE GETNEXT;LABEL 20,25,21,26,40,10;
VAR K:0..BUFSIZE;T:HALFWORD;CAT:0..15;BEGIN 20:CURCS:=0;
IF CURINPUT.STATEFIELD<>0 THEN{343:}
BEGIN 25:IF CURINPUT.LOCFIELD<=CURINPUT.LIMITFIELD THEN BEGIN CURCHR:=
BUFFER[CURINPUT.LOCFIELD];CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;
21:CURCMD:=EQTB[3727+CURCHR].HH.RH;{344:}
CASE CURINPUT.STATEFIELD+CURCMD OF{345:}10,26,42,27,43{:345}:GOTO 25;
1,17,33:{354:}
BEGIN IF CURINPUT.LOCFIELD>CURINPUT.LIMITFIELD THEN CURCS:=257 ELSE
BEGIN 26:K:=CURINPUT.LOCFIELD;CURCHR:=BUFFER[K];
CAT:=EQTB[3727+CURCHR].HH.RH;K:=K+1;
IF CAT=11 THEN CURINPUT.STATEFIELD:=17 ELSE IF CAT=10 THEN CURINPUT.
STATEFIELD:=17 ELSE CURINPUT.STATEFIELD:=1;
IF(CAT=11)AND(K<=CURINPUT.LIMITFIELD)THEN{356:}
BEGIN REPEAT CURCHR:=BUFFER[K];CAT:=EQTB[3727+CURCHR].HH.RH;K:=K+1;
UNTIL(CAT<>11)OR(K>CURINPUT.LIMITFIELD);{355:}
BEGIN IF BUFFER[K]=CURCHR THEN IF CAT=7 THEN IF K<CURINPUT.LIMITFIELD
THEN BEGIN CURCHR:=BUFFER[K+1];
IF CURCHR<64 THEN BUFFER[K-1]:=CURCHR+64 ELSE BUFFER[K-1]:=CURCHR-64;
CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-2;FIRST:=FIRST-2;
WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+2];K:=K+1;END;
GOTO 26;END;END{:355};IF CAT<>11 THEN K:=K-1;
IF K>CURINPUT.LOCFIELD+1 THEN BEGIN CURCS:=IDLOOKUP(CURINPUT.LOCFIELD,K-
CURINPUT.LOCFIELD);CURINPUT.LOCFIELD:=K;GOTO 40;END;END{:356}ELSE{355:}
BEGIN IF BUFFER[K]=CURCHR THEN IF CAT=7 THEN IF K<CURINPUT.LIMITFIELD
THEN BEGIN CURCHR:=BUFFER[K+1];
IF CURCHR<64 THEN BUFFER[K-1]:=CURCHR+64 ELSE BUFFER[K-1]:=CURCHR-64;
CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD-2;FIRST:=FIRST-2;
WHILE K<=CURINPUT.LIMITFIELD DO BEGIN BUFFER[K]:=BUFFER[K+2];K:=K+1;END;
GOTO 26;END;END{:355};CURCS:=129+BUFFER[CURINPUT.LOCFIELD];
CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;40:CURCMD:=EQTB[CURCS].HH.B0;
CURCHR:=EQTB[CURCS].HH.RH;IF CURCMD>=112 THEN CHECKOUTERVA;END{:354};
14,30,46:{353:}BEGIN CURCS:=CURCHR+1;CURCMD:=EQTB[CURCS].HH.B0;
CURCHR:=EQTB[CURCS].HH.RH;CURINPUT.STATEFIELD:=1;
IF CURCMD>=112 THEN CHECKOUTERVA;END{:353};8,24,40:{352:}
BEGIN IF(CURCHR=BUFFER[CURINPUT.LOCFIELD])AND(CURINPUT.LOCFIELD<CURINPUT
.LIMITFIELD)THEN BEGIN IF BUFFER[CURINPUT.LOCFIELD+1]<64 THEN CURCHR:=
BUFFER[CURINPUT.LOCFIELD+1]+64 ELSE CURCHR:=BUFFER[CURINPUT.LOCFIELD+1]
-64;CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+2;GOTO 21;END;
CURINPUT.STATEFIELD:=1;END{:352};16,32,48:{346:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(477);END;BEGIN HELPPTR:=2;HELPLINE[1]:=478;HELPLINE[0]:=479;END;
DELETIONSALL:=FALSE;ERROR;DELETIONSALL:=TRUE;GOTO 20;END{:346};{347:}
11:{349:}BEGIN CURINPUT.STATEFIELD:=17;CURCHR:=32;END{:349};6:{348:}
BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCMD:=10;CURCHR:=32;
END{:348};22,15,31,47:{350:}
BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;GOTO 25;END{:350};
38:{351:}BEGIN CURINPUT.LOCFIELD:=CURINPUT.LIMITFIELD+1;CURCS:=PARLOC;
CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
IF CURCMD>=112 THEN CHECKOUTERVA;END{:351};2:ALIGNSTATE:=ALIGNSTATE+1;
18,34:BEGIN CURINPUT.STATEFIELD:=1;ALIGNSTATE:=ALIGNSTATE+1;END;
3:ALIGNSTATE:=ALIGNSTATE-1;19,35:BEGIN CURINPUT.STATEFIELD:=1;
ALIGNSTATE:=ALIGNSTATE-1;END;
20,21,23,25,28,29,36,37,39,41,44,45:CURINPUT.STATEFIELD:=1;{:347}
OTHERS:END{:344};END ELSE BEGIN CURINPUT.STATEFIELD:=33;{360:}
IF CURINPUT.NAMEFIELD>17 THEN{362:}BEGIN LINE:=LINE+1;
FIRST:=CURINPUT.STARTFIELD;
IF NOT FORCEEOF THEN BEGIN IF INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD],
TRUE)THEN FIRMUPTHELIN ELSE FORCEEOF:=TRUE;END;
IF FORCEEOF THEN BEGIN PRINTCHAR(41);FORCEEOF:=FALSE;BREAK(TTY);
ENDFILEREADI;CHECKOUTERVA;GOTO 20;END;
IF(EQTB[4415].INT<0)OR(EQTB[4415].INT>127)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[4415].INT;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
END{:362}ELSE BEGIN IF NOT(CURINPUT.NAMEFIELD=0)THEN BEGIN CURCMD:=0;
CURCHR:=0;GOTO 10;END;IF INPUTPTR>0 THEN BEGIN ENDFILEREADI;GOTO 20;END;
IF SELECTOR<18 THEN OPENLOGFILE;
IF INTERACTION>1 THEN BEGIN IF(EQTB[4415].INT<0)OR(EQTB[4415].INT>127)
THEN CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD+1;
IF CURINPUT.LIMITFIELD=CURINPUT.STARTFIELD THEN PRINTNL(480);PRINTLN;
FIRST:=CURINPUT.STARTFIELD;BEGIN BEGIN IF INSKP0 THEN END;PRINT(42);
TERMINPUT;END;CURINPUT.LIMITFIELD:=LAST;
IF(EQTB[4415].INT<0)OR(EQTB[4415].INT>127)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[4415].INT;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
END ELSE FATALERROR(481);END{:360};
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINST;END;GOTO 25;END;END{:343}
ELSE{357:}
IF CURINPUT.LOCFIELD<>0 THEN BEGIN T:=MEM[CURINPUT.LOCFIELD].HH.LH;
CURINPUT.LOCFIELD:=MEM[CURINPUT.LOCFIELD].HH.RH;
IF T>=4096 THEN BEGIN CURCS:=T-4096;CURCMD:=EQTB[CURCS].HH.B0;
CURCHR:=EQTB[CURCS].HH.RH;IF CURCMD>=112 THEN IF CURCMD=115 THEN{358:}
BEGIN CURCS:=MEM[CURINPUT.LOCFIELD].HH.LH-4096;CURINPUT.LOCFIELD:=0;
CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;
IF CURCMD>99 THEN BEGIN CURCMD:=0;CURCHR:=257;END;END{:358}
ELSE CHECKOUTERVA;END ELSE BEGIN CURCMD:=T DIV 256;CURCHR:=T MOD 256;
CASE CURCMD OF 1:ALIGNSTATE:=ALIGNSTATE+1;2:ALIGNSTATE:=ALIGNSTATE-1;
5:{359:}BEGIN BEGINTOKENLI(PARAMSTACK[CURINPUT.LIMITFIELD+CURCHR-1],0);
GOTO 20;END{:359};OTHERS:END;END;END ELSE BEGIN ENDTOKENLIST;GOTO 20;
END{:357};{342:}
IF CURCMD<=5 THEN IF CURCMD>=4 THEN IF ALIGNSTATE=0 THEN{789:}
BEGIN IF SCANNERSTATU=4 THEN FATALERROR(775);
CURCMD:=MEM[CURALIGN+5].HH.LH;MEM[CURALIGN+5].HH.LH:=CURCHR;
IF CURCMD=63 THEN BEGINTOKENLI(2990,2)ELSE BEGINTOKENLI(MEM[CURALIGN+2].
INT,2);ALIGNSTATE:=1000000;GOTO 20;END{:789}{:342};
10:IF EQTB[4398].INT>2 THEN BEGIN K:=TRACEDEPTH;PRINTNL(210);
WHILE K>0 DO BEGIN PRINT(32);K:=K-1;END;PRINT(124);PRINTCHAR(32);
IF CURCS>0 THEN BEGIN PRINTCS(CURCS);PRINTCHAR(61);END;
PRINTCMDCHR(CURCMD,CURCHR);END;END;{:341}{363:}PROCEDURE FIRMUPTHELIN;
VAR K:0..BUFSIZE;BEGIN CURINPUT.LIMITFIELD:=LAST;
IF EQTB[4395].INT>0 THEN IF INTERACTION>1 THEN IF BUFFER[CURINPUT.
STARTFIELD]<>12 THEN BEGIN BEGIN IF INSKP0 THEN END;PRINTLN;
IF CURINPUT.STARTFIELD=CURINPUT.LIMITFIELD THEN BEGIN BUFFER[CURINPUT.
STARTFIELD]:=32;CURINPUT.LIMITFIELD:=CURINPUT.LIMITFIELD+1;END;
SELECTOR:=SELECTOR-1;
FOR K:=CURINPUT.STARTFIELD TO CURINPUT.LIMITFIELD-1 DO BEGIN PRINTCHAR(
BUFFER[K]);PTWR1W(0,ORD(XCHR[BUFFER[K]]));END;PRINT(482);
FIRST:=CURINPUT.STARTFIELD;IF NOT INPUTLN(TTY,TRUE)THEN FATALERROR(133);
IF LAST>FIRST THEN FOR K:=FIRST TO LAST-1 DO PRINTCHAR(BUFFER[K]);
CURINPUT.LIMITFIELD:=LAST;PRINTLN;SELECTOR:=SELECTOR+1;END;END;{:363}
{365:}PROCEDURE GETTOKEN;BEGIN NONEWCONTROL:=FALSE;GETNEXT;
NONEWCONTROL:=TRUE;
IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4096+CURCS;END;
{:365}{366:}{389:}PROCEDURE MACROCALL;LABEL 10,22,30,31,40;
VAR R:HALFWORD;P:HALFWORD;Q:HALFWORD;S:HALFWORD;T:HALFWORD;U,V:HALFWORD;
RBRACEPTR:HALFWORD;N:SMALLNUMBER;UNBALANCE:HALFWORD;M:HALFWORD;
REFCOUNT:HALFWORD;SAVESCANNERS:SMALLNUMBER;SAVEWARNINGI:HALFWORD;
MATCHCHR:ASCIICODE;BEGIN SAVESCANNERS:=SCANNERSTATU;
SAVEWARNINGI:=WARNINGINDEX;WARNINGINDEX:=CURCS;REFCOUNT:=CURCHR;
R:=MEM[REFCOUNT].HH.RH;N:=0;IF EQTB[4397].INT>0 THEN{401:}
BEGIN BEGINDIAGNOS;PRINTLN;PRINTCS(WARNINGINDEX);TOKENSHOW(REFCOUNT);
ENDDIAGNOSTI(FALSE);END{:401};IF MEM[R].HH.LH<>3584 THEN{391:}
BEGIN SCANNERSTATU:=3;UNBALANCE:=0;LONGSTATE:=EQTB[CURCS].HH.B0;
IF LONGSTATE>=112 THEN LONGSTATE:=LONGSTATE-2;
REPEAT IF(MEM[R].HH.LH>3455)OR(MEM[R].HH.LH<3328)THEN S:=0 ELSE BEGIN
MATCHCHR:=MEM[R].HH.LH-3328;S:=MEM[R].HH.RH;R:=S;P:=2997;
MEM[P].HH.RH:=0;M:=0;END;{392:}22:GETTOKEN;
IF CURTOK=MEM[R].HH.LH THEN{394:}BEGIN R:=MEM[R].HH.RH;
IF(MEM[R].HH.LH>=3328)AND(MEM[R].HH.LH<=3584)THEN BEGIN IF CURTOK<512
THEN ALIGNSTATE:=ALIGNSTATE-1;GOTO 40;END ELSE GOTO 22;END{:394};{397:}
IF S<>R THEN IF S=0 THEN{398:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(515);END;SPRINTCS(WARNINGINDEX);PRINT(516);BEGIN HELPPTR:=4;
HELPLINE[3]:=517;HELPLINE[2]:=518;HELPLINE[1]:=519;HELPLINE[0]:=520;END;
ERROR;GOTO 10;END{:398}ELSE BEGIN T:=S;REPEAT BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=MEM[T].HH.LH;P:=Q;END;M:=M+1;
U:=MEM[T].HH.RH;V:=S;
WHILE TRUE DO BEGIN IF U=R THEN IF CURTOK<>MEM[V].HH.LH THEN GOTO 30
ELSE BEGIN R:=MEM[V].HH.RH;GOTO 22;END;
IF MEM[U].HH.LH<>MEM[V].HH.LH THEN GOTO 30;U:=MEM[U].HH.RH;
V:=MEM[V].HH.RH;END;30:T:=MEM[T].HH.RH;UNTIL T=R;R:=S;END{:397};
IF CURTOK=PARTOKEN THEN IF LONGSTATE<>111 THEN{396:}
BEGIN IF LONGSTATE=110 THEN BEGIN RUNAWAY;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(510);END;SPRINTCS(WARNINGINDEX);PRINT(511);BEGIN HELPPTR:=3;
HELPLINE[2]:=512;HELPLINE[1]:=513;HELPLINE[0]:=514;END;BACKERROR;END;
PSTACK[N]:=MEM[2997].HH.RH;ALIGNSTATE:=ALIGNSTATE-UNBALANCE;
FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);GOTO 10;END{:396};
IF CURTOK<768 THEN IF CURTOK<512 THEN{399:}BEGIN UNBALANCE:=1;
WHILE TRUE DO BEGIN BEGIN BEGIN Q:=AVAIL;
IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
DYNUSED:=DYNUSED+1;END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;
END;GETTOKEN;IF CURTOK=PARTOKEN THEN IF LONGSTATE<>111 THEN{396:}
BEGIN IF LONGSTATE=110 THEN BEGIN RUNAWAY;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(510);END;SPRINTCS(WARNINGINDEX);PRINT(511);BEGIN HELPPTR:=3;
HELPLINE[2]:=512;HELPLINE[1]:=513;HELPLINE[0]:=514;END;BACKERROR;END;
PSTACK[N]:=MEM[2997].HH.RH;ALIGNSTATE:=ALIGNSTATE-UNBALANCE;
FOR M:=0 TO N DO FLUSHLIST(PSTACK[M]);GOTO 10;END{:396};
IF CURTOK<768 THEN IF CURTOK<512 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 31;END;END;
31:RBRACEPTR:=P;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;
P:=Q;END;END{:399}ELSE{395:}BEGIN BACKINPUT;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(502);END;SPRINTCS(WARNINGINDEX);PRINT(503);BEGIN HELPPTR:=6;
HELPLINE[5]:=504;HELPLINE[4]:=505;HELPLINE[3]:=506;HELPLINE[2]:=507;
HELPLINE[1]:=508;HELPLINE[0]:=509;END;ALIGNSTATE:=ALIGNSTATE+1;
LONGSTATE:=110;CURTOK:=PARTOKEN;INSERROR;END{:395}ELSE{393:}
BEGIN IF CURTOK=2592 THEN IF MEM[R].HH.LH<=3584 THEN IF MEM[R].HH.LH>=
3328 THEN GOTO 22;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;END{:393};M:=M+1;
IF MEM[R].HH.LH>3584 THEN GOTO 22;IF MEM[R].HH.LH<3328 THEN GOTO 22;
40:IF S<>0 THEN{400:}
BEGIN IF(M=1)AND(MEM[P].HH.LH<768)AND(P<>2997)THEN BEGIN MEM[RBRACEPTR].
HH.RH:=0;BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;END;
P:=MEM[2997].HH.RH;PSTACK[N]:=MEM[P].HH.RH;BEGIN MEM[P].HH.RH:=AVAIL;
AVAIL:=P;DYNUSED:=DYNUSED-1;END;END ELSE PSTACK[N]:=MEM[2997].HH.RH;
N:=N+1;IF EQTB[4397].INT>0 THEN BEGIN BEGINDIAGNOS;PRINTNL(MATCHCHR);
PRINTINT(N);PRINT(521);SHOWTOKENLIS(PSTACK[N-1],0,1000);
ENDDIAGNOSTI(FALSE);END;END{:400}{:392};UNTIL MEM[R].HH.LH=3584;
END{:391};{390:}
WHILE(CURINPUT.STATEFIELD=0)AND(CURINPUT.LOCFIELD=0)DO ENDTOKENLIST;
BEGINTOKENLI(REFCOUNT,5);CURINPUT.NAMEFIELD:=WARNINGINDEX;
CURINPUT.LOCFIELD:=MEM[R].HH.RH;
IF N>0 THEN BEGIN IF PARAMPTR+N>MAXPARAMSTAC THEN BEGIN MAXPARAMSTAC:=
PARAMPTR+N;IF MAXPARAMSTAC>PARAMSIZE THEN OVERFLOW(501,PARAMSIZE);END;
FOR M:=0 TO N-1 DO PARAMSTACK[PARAMPTR+M]:=PSTACK[M];
PARAMPTR:=PARAMPTR+N;END{:390};10:SCANNERSTATU:=SAVESCANNERS;
WARNINGINDEX:=SAVEWARNINGI;END;{:389}{379:}PROCEDURE INSERTRELAX;
BEGIN CURTOK:=4096+CURCS;BACKINPUT;CURTOK:=6461;BACKINPUT;
CURINPUT.INDEXFIELD:=4;END;{:379}PROCEDURE PASSTEXT;FORWARD;
PROCEDURE STARTINPUT;FORWARD;PROCEDURE CONDITIONAL;FORWARD;
PROCEDURE GETXTOKEN;FORWARD;PROCEDURE CONVTOKS;FORWARD;
PROCEDURE INSTHETOKS;FORWARD;PROCEDURE EXPAND;VAR T:HALFWORD;
P,Q,R:HALFWORD;J:0..BUFSIZE;CVBACKUP:INTEGER;
CVLBACKUP,RADIXBACKUP:SMALLNUMBER;BACKUPBACKUP:HALFWORD;
SAVESCANNERS:SMALLNUMBER;BEGIN CVBACKUP:=CURVAL;CVLBACKUP:=CURVALLEVEL;
RADIXBACKUP:=RADIX;TRACEDEPTH:=TRACEDEPTH+1;
IF EQTB[4398].INT>2 THEN PRINT(483);BACKUPBACKUP:=MEM[2987].HH.RH;
IF CURCMD<110 THEN{367:}BEGIN IF EQTB[4403].INT>1 THEN SHOWCURCMDCH;
CASE CURCMD OF 109:{386:}
BEGIN IF CURMARK[CURCHR]<>0 THEN BEGINTOKENLI(CURMARK[CURCHR],14);
END{:386};101:{368:}BEGIN GETTOKEN;T:=CURTOK;GETTOKEN;
IF CURCMD>99 THEN EXPAND ELSE BACKINPUT;CURTOK:=T;BACKINPUT;END{:368};
102:{369:}BEGIN SAVESCANNERS:=SCANNERSTATU;SCANNERSTATU:=0;GETTOKEN;
SCANNERSTATU:=SAVESCANNERS;T:=CURTOK;BACKINPUT;
IF T>=4096 THEN BEGIN P:=GETAVAIL;MEM[P].HH.LH:=6463;
MEM[P].HH.RH:=CURINPUT.LOCFIELD;CURINPUT.STARTFIELD:=P;
CURINPUT.LOCFIELD:=P;END;END{:369};106:{372:}BEGIN R:=GETAVAIL;P:=R;
REPEAT GETXTOKEN;IF CURCS=0 THEN BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;UNTIL CURCS<>0;IF CURCMD<>66 THEN{373:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(490);END;PRINTESC(368);PRINT(491);BEGIN HELPPTR:=2;
HELPLINE[1]:=492;HELPLINE[0]:=493;END;BACKERROR;END{:373};{374:}
J:=FIRST;P:=MEM[R].HH.RH;
WHILE P<>0 DO BEGIN IF J>=MAXBUFSTACK THEN BEGIN MAXBUFSTACK:=J+1;
IF MAXBUFSTACK=BUFSIZE THEN OVERFLOW(128,BUFSIZE);END;
BUFFER[J]:=MEM[P].HH.LH MOD 256;J:=J+1;P:=MEM[P].HH.RH;END;
IF J>FIRST+1 THEN BEGIN NONEWCONTROL:=FALSE;
CURCS:=IDLOOKUP(FIRST,J-FIRST);NONEWCONTROL:=TRUE;
END ELSE IF J=FIRST THEN CURCS:=257 ELSE CURCS:=129+BUFFER[FIRST]{:374};
FLUSHLIST(R);
IF EQTB[CURCS].HH.B0=100 THEN BEGIN EQTB[CURCS]:=EQTB[2365];END;
CURTOK:=CURCS+4096;BACKINPUT;END{:372};107:CONVTOKS;108:INSTHETOKS;
104:CONDITIONAL;105:{510:}
IF CURCHR>IFLIMIT THEN IF IFLIMIT=1 THEN INSERTRELAX ELSE BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(643);END;
PRINTCMDCHR(105,CURCHR);BEGIN HELPPTR:=1;HELPLINE[0]:=644;END;ERROR;
END ELSE BEGIN WHILE CURCHR<>2 DO PASSTEXT;{496:}BEGIN P:=CONDPTR;
IFLINE:=MEM[P+1].INT;CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;
CONDPTR:=MEM[P].HH.RH;FREENODE(P,2);END{:496};END{:510};103:{378:}
IF CURCHR>0 THEN FORCEEOF:=TRUE ELSE IF NAMEINPROGRE THEN INSERTRELAX
ELSE STARTINPUT{:378};OTHERS:{370:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(484);END;BEGIN HELPPTR:=5;HELPLINE[4]:=485;HELPLINE[3]:=486;
HELPLINE[2]:=487;HELPLINE[1]:=488;HELPLINE[0]:=489;END;ERROR;END{:370}
END;END{:367}ELSE IF CURCMD<114 THEN MACROCALL ELSE{375:}
BEGIN CURTOK:=6460;BACKINPUT;END{:375};CURVAL:=CVBACKUP;
CURVALLEVEL:=CVLBACKUP;RADIX:=RADIXBACKUP;MEM[2987].HH.RH:=BACKUPBACKUP;
TRACEDEPTH:=TRACEDEPTH-1;IF EQTB[4398].INT>2 THEN PRINTCHAR(62);END;
{:366}{380:}PROCEDURE GETXTOKEN;LABEL 20,30;BEGIN 20:GETNEXT;
IF CURCMD<=99 THEN GOTO 30;
IF CURCMD>=110 THEN IF CURCMD<114 THEN MACROCALL ELSE BEGIN CURCS:=2364;
CURCMD:=9;GOTO 30;END ELSE EXPAND;GOTO 20;
30:IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4096+CURCS;
END;{:380}{381:}PROCEDURE XTOKEN;BEGIN WHILE CURCMD>99 DO BEGIN EXPAND;
GETNEXT;END;
IF CURCS=0 THEN CURTOK:=(CURCMD*256)+CURCHR ELSE CURTOK:=4096+CURCS;END;
{:381}{403:}PROCEDURE SCANLEFTBRAC;BEGIN{404:}REPEAT GETXTOKEN;
UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
IF CURCMD<>1 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(522);END;BEGIN HELPPTR:=4;HELPLINE[3]:=523;
HELPLINE[2]:=524;HELPLINE[1]:=525;HELPLINE[0]:=526;END;BACKERROR;
CURTOK:=379;CURCMD:=1;CURCHR:=123;ALIGNSTATE:=ALIGNSTATE+1;END;END;
{:403}{405:}PROCEDURE SCANOPTIONAL;BEGIN{406:}REPEAT GETXTOKEN;
UNTIL CURCMD<>10{:406};IF CURTOK<>3133 THEN BACKINPUT;END;{:405}{407:}
FUNCTION SCANKEYWORD(S:STRNUMBER):BOOLEAN;LABEL 10;VAR P:HALFWORD;
Q:HALFWORD;K:POOLPOINTER;BEGIN P:=2987;MEM[P].HH.RH:=0;K:=STRSTART[S];
TRACEDEPTH:=TRACEDEPTH+1;IF EQTB[4398].INT>2 THEN BEGIN PRINT(527);
PRINT(S);PRINTCHAR(39);END;WHILE K<STRSTART[S+1]DO BEGIN GETXTOKEN;
IF(CURCS=0)AND((CURCHR=STRPOOL[K])OR(CURCHR=STRPOOL[K]-32))THEN BEGIN
BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;K:=K+1;
END ELSE IF(CURCMD<>10)OR(P<>2987)THEN BEGIN BACKINPUT;
IF P<>2987 THEN BEGINTOKENLI(MEM[2987].HH.RH,3);SCANKEYWORD:=FALSE;
GOTO 10;END;END;FLUSHLIST(MEM[2987].HH.RH);SCANKEYWORD:=TRUE;
IF EQTB[4398].INT>2 THEN PRINTCHAR(42);10:TRACEDEPTH:=TRACEDEPTH-1;
IF EQTB[4398].INT>2 THEN PRINTCHAR(62);END;{:407}{408:}
PROCEDURE MUERROR;
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(528);END;BEGIN HELPPTR:=1;HELPLINE[0]:=529;END;ERROR;END;{:408}
{409:}PROCEDURE SCANINT;FORWARD;{432:}PROCEDURE SCANSEVENBIT;
BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>127)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN
IF INSKP0 THEN END;PRINTNL(134);PRINT(551);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=552;HELPLINE[0]:=553;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{:432}{433:}PROCEDURE SCANEIGHTBIT;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>255)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN
IF INSKP0 THEN END;PRINTNL(134);PRINT(554);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=555;HELPLINE[0]:=553;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{:433}{434:}PROCEDURE SCANFOURBITI;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>15)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(556);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=557;HELPLINE[0]:=553;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{:434}{435:}PROCEDURE SCANCHARNUM;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>255)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN
IF INSKP0 THEN END;PRINTNL(134);PRINT(551);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=558;HELPLINE[0]:=553;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{:435}{436:}PROCEDURE SCANFIFTEENB;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>32767)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN
IF INSKP0 THEN END;PRINTNL(134);PRINT(559);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=560;HELPLINE[0]:=553;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{:436}{437:}PROCEDURE SCANTWENTYSE;BEGIN SCANINT;
IF(CURVAL<0)OR(CURVAL>134217727)THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(561);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=562;HELPLINE[0]:=553;END;INTERROR(CURVAL);CURVAL:=0;END;
END;{:437}{577:}PROCEDURE SCANFONTIDEN;VAR F:INTERNALFONT;M:HALFWORD;
BEGIN{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF CURCMD=87 THEN F:=EQTB[3678].HH.RH ELSE IF CURCMD=86 THEN F:=CURCHR
ELSE IF CURCMD=85 THEN BEGIN M:=CURCHR;SCANFOURBITI;
F:=EQTB[M+CURVAL].HH.RH;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(682);END;BEGIN HELPPTR:=2;HELPLINE[1]:=683;
HELPLINE[0]:=684;END;BACKERROR;F:=0;END;CURVAL:=F;END;{:577}{578:}
PROCEDURE FINDFONTDIME(WRITING:BOOLEAN);VAR F:INTERNALFONT;N:INTEGER;
BEGIN SCANINT;N:=CURVAL;SCANFONTIDEN;F:=CURVAL;
IF N<=0 THEN CURVAL:=FMEMPTR ELSE BEGIN IF WRITING AND(N<=4)AND(N>=2)AND
(FONTGLUE[F]<>0)THEN BEGIN DELETEGLUERE(FONTGLUE[F]);FONTGLUE[F]:=0;END;
IF N>FONTPARAMS[F]THEN IF F<FONTPTR THEN CURVAL:=FMEMPTR ELSE{580:}
BEGIN REPEAT IF FMEMPTR=FONTMEMSIZE THEN OVERFLOW(689,FONTMEMSIZE);
FONTINFO[FMEMPTR].INT:=0;FMEMPTR:=FMEMPTR+1;
FONTPARAMS[F]:=FONTPARAMS[F]+1;UNTIL N=FONTPARAMS[F];CURVAL:=FMEMPTR-1;
END{:580}ELSE CURVAL:=N+PARAMBASE[F];END;{579:}
IF CURVAL=FMEMPTR THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(668);END;PRINTESC(HASH[2368+F].RH);
PRINT(685);PRINTINT(FONTPARAMS[F]);PRINT(686);BEGIN HELPPTR:=2;
HELPLINE[1]:=687;HELPLINE[0]:=688;END;ERROR;END{:579};END;{:578}{:409}
{413:}PROCEDURE SCANSOMETHIN(LEVEL:SMALLNUMBER;NEGATIVE:BOOLEAN);
VAR M:HALFWORD;P:0..NESTSIZE;BEGIN M:=CURCHR;CASE CURCMD OF 84:{414:}
BEGIN SCANSEVENBIT;
IF M=4239 THEN BEGIN CURVAL:=0+EQTB[4239+CURVAL].HH.RH-0;CURVALLEVEL:=0;
END ELSE IF M<4239 THEN BEGIN CURVAL:=EQTB[M+CURVAL].HH.RH;
CURVALLEVEL:=0;END ELSE BEGIN CURVAL:=EQTB[M+CURVAL].INT;CURVALLEVEL:=0;
END;END{:414};70,71,85,86,87:{415:}
IF LEVEL<>5 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(530);END;BEGIN HELPPTR:=3;HELPLINE[2]:=531;
HELPLINE[1]:=532;HELPLINE[0]:=533;END;BACKERROR;BEGIN CURVAL:=0;
CURVALLEVEL:=1;END;
END ELSE IF CURCMD<=71 THEN BEGIN IF CURCMD<71 THEN BEGIN SCANEIGHTBIT;
M:=3166+CURVAL;END;BEGIN CURVAL:=EQTB[M].HH.RH;CURVALLEVEL:=5;END;
END ELSE BEGIN BACKINPUT;SCANFONTIDEN;BEGIN CURVAL:=2368+CURVAL;
CURVALLEVEL:=4;END;END{:415};72:BEGIN CURVAL:=EQTB[M].INT;
CURVALLEVEL:=0;END;73:BEGIN CURVAL:=EQTB[M].INT;CURVALLEVEL:=1;END;
74:BEGIN CURVAL:=EQTB[M].HH.RH;CURVALLEVEL:=2;END;
75:BEGIN CURVAL:=EQTB[M].HH.RH;CURVALLEVEL:=3;END;78:{418:}
IF ABS(CURLIST.MODEFIELD)<>M THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(544);END;PRINTCMDCHR(78,M);
BEGIN HELPPTR:=4;HELPLINE[3]:=545;HELPLINE[2]:=546;HELPLINE[1]:=547;
HELPLINE[0]:=548;END;ERROR;IF LEVEL<>5 THEN BEGIN CURVAL:=0;
CURVALLEVEL:=1;END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;
END ELSE BEGIN CURVAL:=CURLIST.AUXFIELD;
IF M=1 THEN CURVALLEVEL:=1 ELSE CURVALLEVEL:=0;END{:418};79:{422:}
BEGIN NEST[NESTPTR]:=CURLIST;P:=NESTPTR;
WHILE ABS(NEST[P].MODEFIELD)<>1 DO P:=P-1;BEGIN CURVAL:=NEST[P].PGFIELD;
CURVALLEVEL:=0;END;END{:422};81:{419:}
BEGIN IF M=0 THEN CURVAL:=DEADCYCLES ELSE CURVAL:=INSERTPENALT;
CURVALLEVEL:=0;END{:419};80:{421:}
BEGIN IF PAGECONTENTS=0 THEN IF M=0 THEN CURVAL:=1073741823 ELSE CURVAL
:=0 ELSE CURVAL:=PAGESOFAR[M];CURVALLEVEL:=1;END{:421};83:{423:}
BEGIN IF EQTB[3156].HH.RH=0 THEN CURVAL:=0 ELSE CURVAL:=MEM[EQTB[3156].
HH.RH].HH.LH;CURVALLEVEL:=0;END{:423};82:{420:}BEGIN SCANEIGHTBIT;
IF EQTB[3422+CURVAL].HH.RH=0 THEN CURVAL:=0 ELSE CURVAL:=MEM[EQTB[3422+
CURVAL].HH.RH+M].INT;CURVALLEVEL:=1;END{:420};
67,68:BEGIN CURVAL:=CURCHR;CURVALLEVEL:=0;END;76:{425:}
BEGIN FINDFONTDIME(FALSE);FONTINFO[FMEMPTR].INT:=0;
BEGIN CURVAL:=FONTINFO[CURVAL].INT;CURVALLEVEL:=1;END;END{:425};
77:{426:}BEGIN SCANFONTIDEN;
IF M=0 THEN BEGIN CURVAL:=HYPHENCHAR[CURVAL];CURVALLEVEL:=0;
END ELSE BEGIN CURVAL:=SKEWCHAR[CURVAL];CURVALLEVEL:=0;END;END{:426};
88:{427:}BEGIN SCANEIGHTBIT;CASE M OF 0:CURVAL:=EQTB[4417+CURVAL].INT;
1:CURVAL:=EQTB[4821+CURVAL].INT;2:CURVAL:=EQTB[2644+CURVAL].HH.RH;
3:CURVAL:=EQTB[2900+CURVAL].HH.RH;END;CURVALLEVEL:=M;END{:427};69:{424:}
BEGIN IF CURCHR=2 THEN CURVAL:=1 ELSE CURVAL:=0;CURVALLEVEL:=CURCHR;
IF NOT(CURLIST.TAILFIELD>=HIMEMMIN)AND(CURLIST.MODEFIELD<>0)THEN CASE
CURCHR OF 0:IF MEM[CURLIST.TAILFIELD].HH.B0=12 THEN CURVAL:=MEM[CURLIST.
TAILFIELD+1].INT;
1:IF MEM[CURLIST.TAILFIELD].HH.B0=11 THEN CURVAL:=MEM[CURLIST.TAILFIELD
+1].INT;
2:IF MEM[CURLIST.TAILFIELD].HH.B0=10 THEN BEGIN CURVAL:=MEM[CURLIST.
TAILFIELD+1].HH.LH;
IF MEM[CURLIST.TAILFIELD].HH.B1=99 THEN CURVALLEVEL:=3;END;
END ELSE IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
THEN CASE CURCHR OF 0:CURVAL:=LASTPENALTY;1:CURVAL:=LASTKERN;
2:IF LASTGLUE<>32768 THEN CURVAL:=LASTGLUE;END;END{:424};OTHERS:{428:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(549);END;PRINTCMDCHR(CURCMD,CURCHR);PRINT(550);PRINTESC(399);
BEGIN HELPPTR:=1;HELPLINE[0]:=548;END;ERROR;
IF LEVEL<>5 THEN BEGIN CURVAL:=0;CURVALLEVEL:=1;
END ELSE BEGIN CURVAL:=0;CURVALLEVEL:=0;END;END{:428}END;
WHILE CURVALLEVEL>LEVEL DO{429:}
BEGIN IF CURVALLEVEL=2 THEN CURVAL:=MEM[CURVAL+1].INT ELSE IF
CURVALLEVEL=3 THEN MUERROR;CURVALLEVEL:=CURVALLEVEL-1;END{:429};{430:}
IF NEGATIVE THEN IF CURVALLEVEL>=2 THEN BEGIN CURVAL:=NEWSPEC(CURVAL);
{431:}BEGIN MEM[CURVAL+1].INT:=-MEM[CURVAL+1].INT;
MEM[CURVAL+2].INT:=-MEM[CURVAL+2].INT;
MEM[CURVAL+3].INT:=-MEM[CURVAL+3].INT;END{:431};
END ELSE CURVAL:=-CURVAL ELSE IF(CURVALLEVEL>=2)AND(CURVALLEVEL<=3)THEN
MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH+1{:430};END;{:413}{440:}
PROCEDURE SCANINT;LABEL 30;VAR NEGATIVE:BOOLEAN;M:INTEGER;D:SMALLNUMBER;
VACUOUS:BOOLEAN;OKSOFAR:BOOLEAN;BEGIN RADIX:=0;OKSOFAR:=TRUE;
TRACEDEPTH:=TRACEDEPTH+1;IF EQTB[4398].INT>2 THEN PRINT(563);{441:}
NEGATIVE:=FALSE;REPEAT{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
UNTIL CURTOK<>3115{:441};IF CURTOK=3168 THEN{442:}BEGIN GETTOKEN;
IF CURTOK<4096 THEN BEGIN CURVAL:=CURCHR;
IF CURCMD<=2 THEN IF CURCMD=2 THEN ALIGNSTATE:=ALIGNSTATE+1 ELSE
ALIGNSTATE:=ALIGNSTATE-1;
END ELSE IF CURTOK<4225 THEN CURVAL:=CURTOK-4097 ELSE CURVAL:=CURTOK
-4225;
IF CURVAL>127 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(564);END;BEGIN HELPPTR:=2;HELPLINE[1]:=565;
HELPLINE[0]:=566;END;CURVAL:=48;BACKERROR;END ELSE{443:}BEGIN GETXTOKEN;
IF CURCMD<>10 THEN BACKINPUT;END{:443};END{:442}
ELSE IF(CURCMD>=67)AND(CURCMD<=88)THEN SCANSOMETHIN(0,FALSE)ELSE{444:}
BEGIN RADIX:=10;M:=214748364;IF CURTOK=3111 THEN BEGIN RADIX:=8;
M:=268435456;GETXTOKEN;END ELSE IF CURTOK=3106 THEN BEGIN RADIX:=16;
M:=134217728;GETXTOKEN;END;VACUOUS:=TRUE;CURVAL:=0;{445:}
WHILE TRUE DO BEGIN IF(CURTOK<3120+RADIX)AND(CURTOK>=3120)AND(CURTOK<=
3129)THEN D:=CURTOK-3120 ELSE IF RADIX=16 THEN IF(CURTOK<=2886)AND(
CURTOK>=2881)THEN D:=CURTOK-2871 ELSE IF(CURTOK<=3142)AND(CURTOK>=3137)
THEN D:=CURTOK-3127 ELSE GOTO 30 ELSE GOTO 30;VACUOUS:=FALSE;
IF(CURVAL>=M)AND((CURVAL>M)OR(D>7)OR(RADIX<>10))THEN BEGIN IF OKSOFAR
THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(567);END;BEGIN HELPPTR:=2;HELPLINE[1]:=568;
HELPLINE[0]:=569;END;ERROR;CURVAL:=2147483647;OKSOFAR:=FALSE;END;
END ELSE CURVAL:=CURVAL*RADIX+D;GETXTOKEN;END;30:{:445};
IF VACUOUS THEN{446:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(530);END;BEGIN HELPPTR:=3;HELPLINE[2]:=531;HELPLINE[1]:=532;
HELPLINE[0]:=533;END;BACKERROR;END{:446}
ELSE IF CURCMD<>10 THEN BACKINPUT;END{:444};
IF NEGATIVE THEN CURVAL:=-CURVAL;TRACEDEPTH:=TRACEDEPTH-1;
IF EQTB[4398].INT>2 THEN PRINTCHAR(62);END;{:440}{448:}
PROCEDURE SCANDIMEN(MU,INF,SHORTCUT:BOOLEAN);LABEL 30,31,32,40,45,88,89;
VAR NEGATIVE:BOOLEAN;F:INTEGER;{450:}NUM,DENOM:1..65536;K:SMALLNUMBER;
V:SCALED;SAVECURVAL:INTEGER;{:450}BEGIN F:=0;ARITHERROR:=FALSE;
CURORDER:=0;NEGATIVE:=FALSE;TRACEDEPTH:=TRACEDEPTH+1;
IF EQTB[4398].INT>1 THEN PRINT(570);IF NOT SHORTCUT THEN BEGIN{441:}
NEGATIVE:=FALSE;REPEAT{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
UNTIL CURTOK<>3115{:441};IF(CURCMD>=67)AND(CURCMD<=88)THEN{449:}
IF MU THEN BEGIN SCANSOMETHIN(3,FALSE);{451:}
IF CURVALLEVEL>=2 THEN BEGIN V:=MEM[CURVAL+1].INT;DELETEGLUERE(CURVAL);
CURVAL:=V;END{:451};IF CURVALLEVEL=3 THEN GOTO 89;
IF CURVALLEVEL<>0 THEN MUERROR;END ELSE BEGIN SCANSOMETHIN(1,FALSE);
IF CURVALLEVEL=1 THEN GOTO 89;END{:449}ELSE BEGIN BACKINPUT;
IF CURTOK=3116 THEN CURTOK:=3118;
IF CURTOK<>3118 THEN SCANINT ELSE BEGIN RADIX:=10;CURVAL:=0;END;
IF CURTOK=3116 THEN CURTOK:=3118;IF(RADIX=10)AND(CURTOK=3118)THEN{452:}
BEGIN K:=0;GETTOKEN;WHILE TRUE DO BEGIN GETXTOKEN;
IF(CURTOK>3129)OR(CURTOK<3120)THEN GOTO 31;
IF K<17 THEN BEGIN DIG[K]:=CURTOK-3120;K:=K+1;END;END;
31:F:=ROUNDDECIMAL(K);IF CURCMD<>10 THEN BACKINPUT;END{:452};END;END;
IF CURVAL<0 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURVAL:=-CURVAL;END;{453:}
IF INF THEN{454:}IF SCANKEYWORD(183)THEN BEGIN CURORDER:=1;
WHILE SCANKEYWORD(108)DO BEGIN IF CURORDER=3 THEN BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(572);END;
PRINT(573);BEGIN HELPPTR:=1;HELPLINE[0]:=574;END;ERROR;
END ELSE CURORDER:=CURORDER+1;END;GOTO 88;END{:454};{455:}
SAVECURVAL:=CURVAL;{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF(CURCMD<67)OR(CURCMD>88)THEN BACKINPUT ELSE BEGIN IF MU THEN BEGIN
SCANSOMETHIN(3,FALSE);{451:}
IF CURVALLEVEL>=2 THEN BEGIN V:=MEM[CURVAL+1].INT;DELETEGLUERE(CURVAL);
CURVAL:=V;END{:451};IF CURVALLEVEL<>3 THEN MUERROR;
END ELSE SCANSOMETHIN(1,FALSE);V:=CURVAL;GOTO 40;END;IF MU THEN GOTO 45;
IF SCANKEYWORD(575)THEN V:=({558:}
FONTINFO[6+PARAMBASE[EQTB[3678].HH.RH]].INT{:558}
)ELSE IF SCANKEYWORD(576)THEN V:=({559:}
FONTINFO[5+PARAMBASE[EQTB[3678].HH.RH]].INT{:559})ELSE GOTO 45;{443:}
BEGIN GETXTOKEN;IF CURCMD<>10 THEN BACKINPUT;END{:443};
40:CURVAL:=NXPLUSY(SAVECURVAL,V,XNOVERD(V,F,65536));GOTO 89;45:{:455};
IF MU THEN{456:}
IF SCANKEYWORD(209)THEN GOTO 88 ELSE BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(572);END;PRINT(577);
BEGIN HELPPTR:=4;HELPLINE[3]:=578;HELPLINE[2]:=579;HELPLINE[1]:=580;
HELPLINE[0]:=581;END;ERROR;GOTO 88;END{:456};
IF SCANKEYWORD(571)THEN{457:}BEGIN PREPAREMAG;
IF EQTB[4384].INT<>1000 THEN BEGIN CURVAL:=XNOVERD(CURVAL,1000,EQTB[4384
].INT);F:=(1000*F+65536*REMAINDER)DIV EQTB[4384].INT;
CURVAL:=CURVAL+(F DIV 65536);F:=F MOD 65536;END;END{:457};
IF SCANKEYWORD(266)THEN GOTO 88;{458:}
IF SCANKEYWORD(582)THEN BEGIN NUM:=7227;DENOM:=100;
END ELSE IF SCANKEYWORD(583)THEN BEGIN NUM:=12;DENOM:=1;
END ELSE IF SCANKEYWORD(584)THEN BEGIN NUM:=7227;DENOM:=254;
END ELSE IF SCANKEYWORD(585)THEN BEGIN NUM:=7227;DENOM:=2540;
END ELSE IF SCANKEYWORD(586)THEN BEGIN NUM:=7227;DENOM:=7200;
END ELSE IF SCANKEYWORD(587)THEN BEGIN NUM:=1238;DENOM:=1157;
END ELSE IF SCANKEYWORD(588)THEN BEGIN NUM:=14856;DENOM:=1157;
END ELSE IF SCANKEYWORD(589)THEN GOTO 30 ELSE{459:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(572);END;PRINT(590);BEGIN HELPPTR:=6;HELPLINE[5]:=591;
HELPLINE[4]:=592;HELPLINE[3]:=593;HELPLINE[2]:=579;HELPLINE[1]:=580;
HELPLINE[0]:=581;END;ERROR;GOTO 32;END{:459};
CURVAL:=XNOVERD(CURVAL,NUM,DENOM);F:=(NUM*F+65536*REMAINDER)DIV DENOM;
CURVAL:=CURVAL+(F DIV 65536);F:=F MOD 65536;32:{:458};
88:IF CURVAL>=16384 THEN ARITHERROR:=TRUE ELSE CURVAL:=CURVAL*65536+F;
30:{:453};{443:}BEGIN GETXTOKEN;IF CURCMD<>10 THEN BACKINPUT;END{:443};
89:IF ARITHERROR OR(ABS(CURVAL)>=1073741824)THEN{460:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(594);END;BEGIN HELPPTR:=2;HELPLINE[1]:=595;HELPLINE[0]:=596;END;
ERROR;CURVAL:=1073741823;ARITHERROR:=FALSE;END{:460};
IF NEGATIVE THEN CURVAL:=-CURVAL;TRACEDEPTH:=TRACEDEPTH-1;
IF EQTB[4398].INT>2 THEN PRINTCHAR(62);END;{:448}{461:}
PROCEDURE SCANGLUE(LEVEL:SMALLNUMBER);LABEL 10;VAR NEGATIVE:BOOLEAN;
Q:HALFWORD;MU:BOOLEAN;BEGIN MU:=(LEVEL=3);{441:}NEGATIVE:=FALSE;
REPEAT{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF CURTOK=3117 THEN BEGIN NEGATIVE:=NOT NEGATIVE;CURTOK:=3115;END;
UNTIL CURTOK<>3115{:441};
IF(CURCMD>=67)AND(CURCMD<=88)THEN BEGIN SCANSOMETHIN(LEVEL,NEGATIVE);
IF CURVALLEVEL>=2 THEN BEGIN IF CURVALLEVEL<>LEVEL THEN MUERROR;GOTO 10;
END;IF CURVALLEVEL=0 THEN SCANDIMEN(MU,FALSE,TRUE)ELSE IF LEVEL=3 THEN
MUERROR;END ELSE BEGIN BACKINPUT;SCANDIMEN(MU,FALSE,FALSE);
IF NEGATIVE THEN CURVAL:=-CURVAL;END;{462:}Q:=NEWSPEC(1);
MEM[Q+1].INT:=CURVAL;
IF SCANKEYWORD(597)THEN BEGIN SCANDIMEN(MU,TRUE,FALSE);
MEM[Q+2].INT:=CURVAL;MEM[Q].HH.B0:=CURORDER;END;
IF SCANKEYWORD(598)THEN BEGIN SCANDIMEN(MU,TRUE,FALSE);
MEM[Q+3].INT:=CURVAL;MEM[Q].HH.B1:=CURORDER;END;CURVAL:=Q{:462};10:END;
{:461}{463:}FUNCTION SCANRULESPEC:HALFWORD;LABEL 21;VAR Q:HALFWORD;
BEGIN Q:=NEWRULE;
IF CURCMD=35 THEN MEM[Q+1].INT:=26214 ELSE BEGIN MEM[Q+3].INT:=26214;
MEM[Q+2].INT:=0;END;
21:IF SCANKEYWORD(599)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[Q+1].INT:=CURVAL;GOTO 21;END;
IF SCANKEYWORD(600)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[Q+3].INT:=CURVAL;GOTO 21;END;
IF SCANKEYWORD(601)THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[Q+2].INT:=CURVAL;GOTO 21;END;SCANRULESPEC:=Q;END;{:463}{464:}
FUNCTION STRTOKS:HALFWORD;VAR P:HALFWORD;Q:HALFWORD;T:HALFWORD;
K:POOLPOINTER;
BEGIN BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR
);END;P:=2997;MEM[P].HH.RH:=0;K:=STRSTART[STRPTR];
WHILE K<POOLPTR DO BEGIN T:=STRPOOL[K];
IF T=32 THEN T:=2592 ELSE T:=3072+T;BEGIN BEGIN Q:=AVAIL;
IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
DYNUSED:=DYNUSED+1;END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=T;P:=Q;END;
K:=K+1;END;POOLPTR:=STRSTART[STRPTR];STRTOKS:=P;END;{:464}{465:}
FUNCTION THETOKS:HALFWORD;VAR OLDSETTING:0..21;P,Q,R:HALFWORD;
BEGIN GETXTOKEN;SCANSOMETHIN(5,FALSE);IF CURVALLEVEL>=4 THEN{466:}
BEGIN P:=2997;MEM[P].HH.RH:=0;IF CURVALLEVEL=4 THEN BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=4096+CURVAL;P:=Q;
END ELSE IF CURVAL<>0 THEN BEGIN R:=MEM[CURVAL].HH.RH;
WHILE R<>0 DO BEGIN BEGIN BEGIN Q:=AVAIL;
IF Q=0 THEN Q:=GETAVAIL ELSE BEGIN AVAIL:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
DYNUSED:=DYNUSED+1;END;END;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=MEM[R].HH.LH;
P:=Q;END;R:=MEM[R].HH.RH;END;END;THETOKS:=P;END{:466}
ELSE BEGIN OLDSETTING:=SELECTOR;SELECTOR:=21;
CASE CURVALLEVEL OF 0:PRINTINT(CURVAL);1:BEGIN PRINTSCALED(CURVAL);
PRINT(266);END;2:BEGIN PRINTSPEC(CURVAL,266);DELETEGLUERE(CURVAL);END;
3:BEGIN PRINTSPEC(CURVAL,209);DELETEGLUERE(CURVAL);END;END;
SELECTOR:=OLDSETTING;THETOKS:=STRTOKS;END;END;{:465}{467:}
PROCEDURE INSTHETOKS;BEGIN MEM[2988].HH.RH:=THETOKS;
BEGINTOKENLI(MEM[2997].HH.RH,4);END;{:467}{470:}PROCEDURE CONVTOKS;
VAR OLDSETTING:0..21;C:0..5;SAVESCANNERS:SMALLNUMBER;BEGIN C:=CURCHR;
{471:}CASE C OF 0,1:SCANINT;2,3:BEGIN SAVESCANNERS:=SCANNERSTATU;
SCANNERSTATU:=0;GETTOKEN;SCANNERSTATU:=SAVESCANNERS;END;4:SCANFONTIDEN;
5:IF JOBNAME=0 THEN OPENLOGFILE;END{:471};OLDSETTING:=SELECTOR;
SELECTOR:=21;{472:}CASE C OF 0:PRINTINT(CURVAL);1:PRINTROMANIN(CURVAL);
2:IF CURCS<>0 THEN SPRINTCS(CURCS)ELSE PRINTCHAR(CURCHR);3:PRINTMEANING;
4:BEGIN PRINT(FONTNAME[CURVAL]);
IF FONTSIZE[CURVAL]<>FONTDSIZE[CURVAL]THEN BEGIN PRINT(608);
PRINTSCALED(FONTSIZE[CURVAL]);PRINT(266);END;END;5:PRINT(JOBNAME);
END{:472};SELECTOR:=OLDSETTING;MEM[2988].HH.RH:=STRTOKS;
BEGINTOKENLI(MEM[2997].HH.RH,4);END;{:470}{473:}
FUNCTION SCANTOKS(MACRODEF,XPAND:BOOLEAN):HALFWORD;LABEL 40,30,31,32;
VAR T:HALFWORD;S:HALFWORD;P:HALFWORD;Q:HALFWORD;UNBALANCE:HALFWORD;
HASHBRACE:HALFWORD;
BEGIN IF MACRODEF THEN SCANNERSTATU:=2 ELSE SCANNERSTATU:=5;
WARNINGINDEX:=CURCS;DEFREF:=GETAVAIL;MEM[DEFREF].HH.LH:=0;P:=DEFREF;
HASHBRACE:=0;T:=3120;IF MACRODEF THEN{474:}
BEGIN WHILE TRUE DO BEGIN GETTOKEN;IF CURTOK<768 THEN GOTO 31;
IF CURCMD=6 THEN{476:}BEGIN S:=3328+CURCHR;GETTOKEN;
IF CURCMD=1 THEN BEGIN HASHBRACE:=CURTOK;BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=3584;P:=Q;END;GOTO 30;END;
IF T=3129 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(611);END;BEGIN HELPPTR:=1;HELPLINE[0]:=612;END;
ERROR;END ELSE BEGIN T:=T+1;
IF CURTOK<>T THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(613);END;BEGIN HELPPTR:=2;HELPLINE[1]:=614;
HELPLINE[0]:=615;END;BACKERROR;END;CURTOK:=S;END;END{:476};
BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;END;
31:BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=3584;P:=Q;END;
IF CURCMD=2 THEN{475:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(522);END;ALIGNSTATE:=ALIGNSTATE+1;BEGIN HELPPTR:=2;
HELPLINE[1]:=609;HELPLINE[0]:=610;END;ERROR;GOTO 40;END{:475};
30:END{:474}ELSE SCANLEFTBRAC;{477:}UNBALANCE:=1;
WHILE TRUE DO BEGIN IF XPAND THEN{478:}
BEGIN WHILE TRUE DO BEGIN GETNEXT;IF CURCMD<=99 THEN GOTO 32;
IF CURCMD<>108 THEN EXPAND ELSE BEGIN Q:=THETOKS;
IF MEM[2997].HH.RH<>0 THEN BEGIN MEM[P].HH.RH:=MEM[2997].HH.RH;P:=Q;END;
END;END;32:XTOKEN END{:478}ELSE GETTOKEN;
IF CURTOK<768 THEN IF CURCMD<2 THEN UNBALANCE:=UNBALANCE+1 ELSE BEGIN
UNBALANCE:=UNBALANCE-1;IF UNBALANCE=0 THEN GOTO 40;
END ELSE IF CURCMD=6 THEN IF MACRODEF THEN{479:}BEGIN S:=CURTOK;
IF XPAND THEN GETXTOKEN ELSE GETTOKEN;
IF CURCMD<>6 THEN IF(CURTOK<=3120)OR(CURTOK>T)THEN BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(616);END;
SPRINTCS(WARNINGINDEX);BEGIN HELPPTR:=3;HELPLINE[2]:=617;
HELPLINE[1]:=618;HELPLINE[0]:=619;END;BACKERROR;CURTOK:=S;
END ELSE CURTOK:=1232+CURCHR;END{:479};BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=CURTOK;P:=Q;END;END{:477};
40:SCANNERSTATU:=0;IF HASHBRACE<>0 THEN BEGIN Q:=GETAVAIL;
MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=HASHBRACE;P:=Q;END;SCANTOKS:=P;END;{:473}
{482:}PROCEDURE READTOKS(N:INTEGER;R:HALFWORD);LABEL 30;VAR P:HALFWORD;
Q:HALFWORD;S:INTEGER;M:SMALLNUMBER;BEGIN SCANNERSTATU:=2;
WARNINGINDEX:=R;DEFREF:=GETAVAIL;MEM[DEFREF].HH.LH:=0;P:=DEFREF;
BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;MEM[Q].HH.LH:=3584;P:=Q;END;
IF(N<0)OR(N>15)THEN M:=16 ELSE M:=N;S:=ALIGNSTATE;ALIGNSTATE:=1000000;
REPEAT{483:}BEGINFILEREA;CURINPUT.NAMEFIELD:=M+1;
IF READOPEN[M]=2 THEN{484:}
IF INTERACTION>1 THEN IF N<0 THEN BEGIN BEGIN IF INSKP0 THEN END;
PRINT(210);TERMINPUT;END ELSE BEGIN BEGIN IF INSKP0 THEN END;PRINTLN;
SPRINTCS(R);BEGIN BEGIN IF INSKP0 THEN END;PRINT(61);TERMINPUT;END;
N:=-1;END ELSE FATALERROR(620){:484}ELSE IF READOPEN[M]=1 THEN{485:}
IF NOT INPUTLN(READFILE[M],FALSE)THEN BEGIN ACLOSE(READFILE[M]);
READOPEN[M]:=2;
END ELSE BEGIN IF(LAST-CURINPUT.STARTFIELD=29)AND(BUFFER[CURINPUT.
STARTFIELD]=67)AND(BUFFER[CURINPUT.STARTFIELD+8]=22)THEN BEGIN WHILE(
READFILE[M]↑<>CHR(12))AND(NOT EOF(READFILE[M]))DO BEGIN READLN(READFILE[
M]);READ(READFILE[M],AUXBUF:TEMPPTR);END;
BUFFER[CURINPUT.STARTFIELD]:=12;LAST:=CURINPUT.STARTFIELD+1;END;
READOPEN[M]:=0;END{:485}ELSE{486:}
BEGIN IF NOT INPUTLN(READFILE[M],TRUE)THEN BEGIN ACLOSE(READFILE[M]);
READOPEN[M]:=2;IF ALIGNSTATE<>1000000 THEN BEGIN RUNAWAY;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(621);END;PRINTESC(396);BEGIN HELPPTR:=1;HELPLINE[0]:=622;END;
ALIGNSTATE:=1000000;ERROR;END;END;END{:486};CURINPUT.LIMITFIELD:=LAST;
IF(EQTB[4415].INT<0)OR(EQTB[4415].INT>127)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[4415].INT;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
CURINPUT.STATEFIELD:=33;WHILE TRUE DO BEGIN GETTOKEN;
IF CURTOK=0 THEN GOTO 30;BEGIN Q:=GETAVAIL;MEM[P].HH.RH:=Q;
MEM[Q].HH.LH:=CURTOK;P:=Q;END;END;30:ENDFILEREADI{:483};
UNTIL ALIGNSTATE=1000000;CURVAL:=DEFREF;SCANNERSTATU:=0;ALIGNSTATE:=S;
END;{:482}{494:}PROCEDURE PASSTEXT;LABEL 30;VAR L:INTEGER;
SAVESCANNERS:SMALLNUMBER;BEGIN SAVESCANNERS:=SCANNERSTATU;
SCANNERSTATU:=1;L:=0;SKIPLINE:=LINE;SKIPPAGE:=PAGE;
WHILE TRUE DO BEGIN GETNEXT;
IF CURCMD=105 THEN BEGIN IF L=0 THEN GOTO 30;IF CURCHR=2 THEN L:=L-1;
END ELSE IF CURCMD=104 THEN L:=L+1;END;30:SCANNERSTATU:=SAVESCANNERS;
END;{:494}{497:}PROCEDURE CHANGEIFLIMI(L:SMALLNUMBER;P:HALFWORD);
LABEL 10;VAR Q:HALFWORD;
BEGIN IF P=CONDPTR THEN IFLIMIT:=L ELSE BEGIN Q:=CONDPTR;
WHILE TRUE DO BEGIN IF Q=0 THEN CONFUSION(623);
IF MEM[Q].HH.RH=P THEN BEGIN MEM[Q].HH.B0:=L;GOTO 10;END;
Q:=MEM[Q].HH.RH;END;END;10:END;{:497}{498:}PROCEDURE CONDITIONAL;
LABEL 10,50;VAR B:BOOLEAN;R:60..62;M,N:INTEGER;P,Q:HALFWORD;
SAVESCANNERS:SMALLNUMBER;SAVECONDPTR:HALFWORD;THISIF:SMALLNUMBER;
BEGIN{495:}BEGIN P:=GETNODE(2);MEM[P].HH.RH:=CONDPTR;
MEM[P].HH.B0:=IFLIMIT;MEM[P].HH.B1:=CURIF;MEM[P+1].INT:=IFLINE;
CONDPTR:=P;CURIF:=CURCHR;IFLIMIT:=1;IFLINE:=LINE;END{:495};
SAVECONDPTR:=CONDPTR;THISIF:=CURCHR;{501:}CASE THISIF OF 0,1:{506:}
BEGIN BEGIN GETXTOKEN;
IF CURCMD=0 THEN IF CURCHR=257 THEN BEGIN CURCMD:=13;
CURCHR:=CURTOK-4097;END;END;IF(CURCMD>13)OR(CURCHR>127)THEN BEGIN M:=0;
N:=256;END ELSE BEGIN M:=CURCMD;N:=CURCHR;END;BEGIN GETXTOKEN;
IF CURCMD=0 THEN IF CURCHR=257 THEN BEGIN CURCMD:=13;
CURCHR:=CURTOK-4097;END;END;
IF(CURCMD>13)OR(CURCHR>127)THEN BEGIN CURCMD:=0;CURCHR:=256;END;
IF THISIF=0 THEN B:=(N=CURCHR)ELSE B:=(M=CURCMD);END{:506};2,3:{503:}
BEGIN IF THISIF=2 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
N:=CURVAL;{406:}REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF(CURTOK>=3132)AND(CURTOK<=3134)THEN R:=CURTOK-3072 ELSE BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(647);END;
PRINTCMDCHR(104,THISIF);BEGIN HELPPTR:=1;HELPLINE[0]:=648;END;BACKERROR;
R:=61;END;IF THISIF=2 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
CASE R OF 60:B:=(N<CURVAL);61:B:=(N=CURVAL);62:B:=(N>CURVAL);END;
END{:503};4:{504:}BEGIN SCANINT;B:=ODD(CURVAL);END{:504};
5:B:=(ABS(CURLIST.MODEFIELD)=1);6:B:=(ABS(CURLIST.MODEFIELD)=101);
7:B:=(ABS(CURLIST.MODEFIELD)=201);8:B:=(CURLIST.MODEFIELD<0);
9,10,11:{505:}BEGIN SCANEIGHTBIT;P:=EQTB[3422+CURVAL].HH.RH;
IF THISIF=9 THEN B:=(P=0)ELSE IF P=0 THEN B:=FALSE ELSE IF THISIF=10
THEN B:=(MEM[P].HH.B0=0)ELSE B:=(MEM[P].HH.B0=1);END{:505};12:{507:}
BEGIN SAVESCANNERS:=SCANNERSTATU;SCANNERSTATU:=0;GETNEXT;N:=CURCS;
P:=CURCMD;Q:=CURCHR;GETNEXT;
IF CURCMD<>P THEN B:=FALSE ELSE IF CURCMD<110 THEN B:=(CURCHR=Q)ELSE{508
:}BEGIN P:=MEM[CURCHR].HH.RH;Q:=MEM[EQTB[N].HH.RH].HH.RH;
WHILE(P<>0)AND(Q<>0)DO IF MEM[P].HH.LH<>MEM[Q].HH.LH THEN P:=0 ELSE
BEGIN P:=MEM[P].HH.RH;Q:=MEM[Q].HH.RH;END;B:=((P=0)AND(Q=0));END{:508};
SCANNERSTATU:=SAVESCANNERS;END{:507};13:BEGIN SCANFOURBITI;
B:=(READOPEN[CURVAL]=2);END;14:B:=TRUE;15:B:=FALSE;16:{509:}
BEGIN SCANINT;N:=CURVAL;IF EQTB[4403].INT>1 THEN BEGIN BEGINDIAGNOS;
PRINT(649);PRINTINT(N);PRINTCHAR(125);ENDDIAGNOSTI(FALSE);END;
WHILE N<>0 DO BEGIN PASSTEXT;
IF CONDPTR=SAVECONDPTR THEN IF CURCHR=4 THEN N:=N-1 ELSE GOTO 50 ELSE IF
CURCHR=2 THEN{496:}BEGIN P:=CONDPTR;IFLINE:=MEM[P+1].INT;
CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;
FREENODE(P,2);END{:496};END;CHANGEIFLIMI(4,SAVECONDPTR);GOTO 10;
END{:509};END{:501};IF EQTB[4403].INT>1 THEN{502:}BEGIN BEGINDIAGNOS;
IF B THEN PRINT(645)ELSE PRINT(646);ENDDIAGNOSTI(FALSE);END{:502};
IF B THEN BEGIN CHANGEIFLIMI(3,SAVECONDPTR);GOTO 10;END;{500:}
WHILE TRUE DO BEGIN PASSTEXT;
IF CONDPTR=SAVECONDPTR THEN BEGIN IF CURCHR<>4 THEN GOTO 50;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(643);END;PRINTESC(641);BEGIN HELPPTR:=1;HELPLINE[0]:=644;END;
ERROR;END ELSE IF CURCHR=2 THEN{496:}BEGIN P:=CONDPTR;
IFLINE:=MEM[P+1].INT;CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;
CONDPTR:=MEM[P].HH.RH;FREENODE(P,2);END{:496};END{:500};
50:IF CURCHR=2 THEN{496:}BEGIN P:=CONDPTR;IFLINE:=MEM[P+1].INT;
CURIF:=MEM[P].HH.B1;IFLIMIT:=MEM[P].HH.B0;CONDPTR:=MEM[P].HH.RH;
FREENODE(P,2);END{:496}ELSE IFLIMIT:=2;10:END;{:498}{515:}
PROCEDURE BEGINNAME;BEGIN AREADELIMITE:=0;EXTDELIMITER:=0;END;{:515}
{516:}FUNCTION MORENAME(C:ASCIICODE):BOOLEAN;
BEGIN IF C=32 THEN MORENAME:=FALSE ELSE BEGIN IF C=91 THEN AREADELIMITE
:=POOLPTR ELSE IF C=46 THEN EXTDELIMITER:=POOLPTR;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR);END;
BEGIN STRPOOL[POOLPTR]:=C;POOLPTR:=POOLPTR+1;END;MORENAME:=TRUE;END;END;
{:516}{517:}PROCEDURE ENDNAME;
BEGIN IF STRPTR+3>MAXSTRINGS THEN OVERFLOW(130,MAXSTRINGS-INITSTRPTR);
CURNAME:=STRPTR;
IF EXTDELIMITER=0 THEN CUREXT:=210 ELSE BEGIN STRPTR:=STRPTR+1;
STRSTART[STRPTR]:=EXTDELIMITER;CUREXT:=STRPTR;END;
IF AREADELIMITE<=STRSTART[STRPTR]THEN BEGIN CURAREA:=210;
STRPTR:=STRPTR+1;STRSTART[STRPTR]:=POOLPTR;
END ELSE BEGIN STRPTR:=STRPTR+1;STRSTART[STRPTR]:=AREADELIMITE;
CURAREA:=MAKESTRING;END;END;{:517}{519:}
PROCEDURE PACKFILENAME(N,A,E:STRNUMBER);VAR K:INTEGER;C:ASCIICODE;
J:POOLPOINTER;BEGIN K:=0;J:=652;
FOR J:=STRSTART[N]TO STRSTART[N+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=STRSTART[E]TO STRSTART[E+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=STRSTART[A]TO STRSTART[A+1]-1 DO BEGIN C:=STRPOOL[J];K:=K+1;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
IF K<=FILENAMESIZE THEN NAMELENGTH:=K ELSE NAMELENGTH:=FILENAMESIZE;
FOR K:=NAMELENGTH+1 TO FILENAMESIZE DO NAMEOFFILE[K]:=' ';END;{:519}
{523:}PROCEDURE PACKBUFFERED(N:SMALLNUMBER;A,B:INTEGER);VAR K:INTEGER;
C:ASCIICODE;J:INTEGER;D:INTEGER;
BEGIN IF N+B-A+5>FILENAMESIZE THEN B:=A+FILENAMESIZE-N-5;K:=0;
FOR J:=A TO B DO BEGIN C:=BUFFER[J];K:=K+1;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
IF B=0 THEN BEGIN D:=10;N:=18;END ELSE D:=6;
FOR J:=D TO 9 DO BEGIN C:=XORD[TEXFORMATDEF[J]];K:=K+1;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
FOR J:=18-N+1 TO 18 DO BEGIN C:=XORD[TEXFORMATDEF[J]];K:=K+1;
IF K<=FILENAMESIZE THEN NAMEOFFILE[K]:=XCHR[C];END;
IF K<=FILENAMESIZE THEN NAMELENGTH:=K ELSE NAMELENGTH:=FILENAMESIZE;
FOR K:=NAMELENGTH+1 TO FILENAMESIZE DO NAMEOFFILE[K]:=' ';END;{:523}
{525:}FUNCTION MAKENAMESTRI:STRNUMBER;VAR K:1..FILENAMESIZE;
BEGIN IF(POOLPTR+NAMELENGTH>POOLSIZE)OR(STRPTR=MAXSTRINGS)THEN
MAKENAMESTRI:=63 ELSE BEGIN FOR K:=1 TO NAMELENGTH DO BEGIN STRPOOL[
POOLPTR]:=XORD[NAMEOFFILE[K]];POOLPTR:=POOLPTR+1;END;
MAKENAMESTRI:=MAKESTRING;END;END;
FUNCTION AMAKENAMESTR(VAR F:ALPHAFILE):STRNUMBER;
BEGIN AMAKENAMESTR:=MAKENAMESTRI;END;
FUNCTION BMAKENAMESTR(VAR F:BYTEFILE):STRNUMBER;
BEGIN BMAKENAMESTR:=MAKENAMESTRI;END;
FUNCTION WMAKENAMESTR(VAR F:WORDFILE):STRNUMBER;
BEGIN WMAKENAMESTR:=MAKENAMESTRI;END;{:525}{526:}PROCEDURE SCANFILENAME;
LABEL 30;BEGIN NAMEINPROGRE:=TRUE;BEGINNAME;{406:}REPEAT GETXTOKEN;
UNTIL CURCMD<>10{:406};
WHILE TRUE DO BEGIN IF(CURCMD>12)OR(CURCHR>127)THEN BEGIN BACKINPUT;
GOTO 30;END;IF NOT MORENAME(CURCHR)THEN GOTO 30;GETXTOKEN;END;
30:ENDNAME;NAMEINPROGRE:=FALSE;END;{:526}{529:}
PROCEDURE PACKJOBNAME(S:STRNUMBER);BEGIN CURAREA:=210;CUREXT:=S;
CURNAME:=JOBNAME;PACKFILENAME(CURNAME,CURAREA,CUREXT);END;{:529}{530:}
PROCEDURE PROMPTFILENA(S,E:STRNUMBER);LABEL 30;VAR K:0..BUFSIZE;
I:POOLPOINTER;BEGIN IF INTERACTION=2 THEN BEGIN IF INSKP0 THEN END;
IF S=653 THEN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(654);
END ELSE BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(655);END;PRINTFILENAM(CURNAME,CURAREA,CUREXT);
PRINT(656);IF E=657 THEN SHOWCONTEXT;PRINTNL(658);PRINT(S);
IF INTERACTION<2 THEN FATALERROR(659);BREAKIN(TTY,TRUE);
FOR I:=STRSTART[CURNAME]TO STRSTART[CURNAME+1]-1 DO PTWR1W(0,ORD(XCHR[
STRPOOL[I]]));
FOR I:=STRSTART[CUREXT]TO STRSTART[CUREXT+1]-1 DO PTWR1W(0,ORD(XCHR[
STRPOOL[I]]));
FOR I:=STRSTART[CURAREA]TO STRSTART[CURAREA+1]-1 DO PTWR1W(0,ORD(XCHR[
STRPOOL[I]]));PTWR1W(0,140);BEGIN BEGIN IF INSKP0 THEN END;PRINT(430);
TERMINPUT;END;{531:}BEGIN BEGINNAME;K:=FIRST;
WHILE(BUFFER[K]=32)AND(K<LAST)DO K:=K+1;
WHILE TRUE DO BEGIN IF K=LAST THEN GOTO 30;
IF NOT MORENAME(BUFFER[K])THEN GOTO 30;K:=K+1;END;30:ENDNAME;END{:531};
IF CUREXT=210 THEN CUREXT:=E;PACKFILENAME(CURNAME,CURAREA,CUREXT);END;
{:530}{534:}PROCEDURE OPENLOGFILE;VAR OLDSETTING:0..21;K:0..BUFSIZE;
L:0..BUFSIZE;MONTHS:PACKED ARRAY[1..36]OF CHAR;
BEGIN OLDSETTING:=SELECTOR;IF JOBNAME=0 THEN JOBNAME:=662;
PACKJOBNAME(663);WHILE NOT AOPENOUT(LOGFILE)DO{535:}
BEGIN IF INTERACTION<2 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(655);END;
PRINTFILENAM(CURNAME,CURAREA,CUREXT);PRINT(656);JOBNAME:=0;HISTORY:=3;
JUMPOUT;END;PROMPTFILENA(665,663);END{:535};
LOGNAME:=AMAKENAMESTR(LOGFILE);SELECTOR:=18;{536:}
BEGIN WRITE(LOGFILE,'This is TeX, Version 2.2');PRINT(FORMATIDENT);
PRINT(666);PRINTINT(EQTB[4388].INT);PRINTCHAR(32);
MONTHS:='JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC';
FOR K:=3*EQTB[4389].INT-2 TO 3*EQTB[4389].INT DO WRITE(LOGFILE,MONTHS[K]
);PRINTCHAR(32);PRINTINT(EQTB[4390].INT);PRINTCHAR(32);
PRINTTWO(EQTB[4387].INT DIV 60);PRINTCHAR(58);
PRINTTWO(EQTB[4387].INT MOD 60);END{:536};
INPUTSTACK[INPUTPTR]:=CURINPUT;PRINTNL(664);L:=INPUTSTACK[0].LIMITFIELD;
IF BUFFER[L]=EQTB[4415].INT THEN L:=L-1;
FOR K:=1 TO L DO PRINT(BUFFER[K]);PRINTLN;SELECTOR:=OLDSETTING+2;END;
{:534}{537:}PROCEDURE STARTINPUT;LABEL 30;BEGIN SCANFILENAME;
IF CUREXT=210 THEN CUREXT:=657;PACKFILENAME(CURNAME,CURAREA,CUREXT);
WHILE TRUE DO BEGIN BEGINFILEREA;
IF AOPENIN(INPUTFILE[CURINPUT.INDEXFIELD])THEN GOTO 30;
IF CURAREA=210 THEN BEGIN PACKFILENAME(CURNAME,650,CUREXT);
IF AOPENIN(INPUTFILE[CURINPUT.INDEXFIELD])THEN GOTO 30;END;ENDFILEREADI;
PROMPTFILENA(653,657);END;
30:CURINPUT.NAMEFIELD:=AMAKENAMESTR(INPUTFILE[CURINPUT.INDEXFIELD]);
IF JOBNAME=0 THEN BEGIN JOBNAME:=CURNAME;OPENLOGFILE;END;
IF TERMOFFSET+(STRSTART[CURINPUT.NAMEFIELD+1]-STRSTART[CURINPUT.
NAMEFIELD])>MAXPRINTLINE-2 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(
FILEOFFSET>0)THEN PRINTCHAR(32);PRINTCHAR(40);PRINT(CURINPUT.NAMEFIELD);
BREAK(TTY);CURINPUT.STATEFIELD:=33;
IF CURINPUT.NAMEFIELD=STRPTR-1 THEN BEGIN BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];END;CURINPUT.NAMEFIELD:=CURNAME;END;{538:}
BEGIN IF INPUTLN(INPUTFILE[CURINPUT.INDEXFIELD],FALSE)THEN BEGIN IF(LAST
-CURINPUT.STARTFIELD=29)AND(BUFFER[CURINPUT.STARTFIELD]=67)AND(BUFFER[
CURINPUT.STARTFIELD+8]=22)THEN BEGIN WHILE(INPUTFILE[CURINPUT.INDEXFIELD
]↑<>CHR(12))AND(NOT EOF(INPUTFILE[CURINPUT.INDEXFIELD]))DO BEGIN READLN(
INPUTFILE[CURINPUT.INDEXFIELD]);
READ(INPUTFILE[CURINPUT.INDEXFIELD],AUXBUF:TEMPPTR);END;
BUFFER[CURINPUT.STARTFIELD]:=12;LAST:=CURINPUT.STARTFIELD+1;END;END;
PAGE:=1;FIRMUPTHELIN;
IF(EQTB[4415].INT<0)OR(EQTB[4415].INT>127)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[4415].INT;
FIRST:=CURINPUT.LIMITFIELD+1;CURINPUT.LOCFIELD:=CURINPUT.STARTFIELD;
LINE:=1;END{:538};END;{:537}{560:}FUNCTION READFONTINFO(U:HALFWORD;
NOM,AIRE:STRNUMBER;S:SCALED):INTERNALFONT;LABEL 30,11,45;
VAR K:0..FONTMEMSIZE;FILEOPENED:BOOLEAN;
LF,LH,BC,EC,NW,NH,ND,NI,NL,NK,NE,NP:HALFWORD;F:INTERNALFONT;
G:INTERNALFONT;A,B,C,D:EIGHTBITS;QW:FOURQUARTERS;SW:SCALED;Z:SCALED;
ALPHA:INTEGER;BETA:1..16;BEGIN G:=0;{562:}{563:}FILEOPENED:=FALSE;
IF AIRE=210 THEN PACKFILENAME(NOM,651,652)ELSE PACKFILENAME(NOM,AIRE,652
);IF NOT BOPENIN(TFMFILE)THEN GOTO 11;FILEOPENED:=TRUE{:563};{565:}
BEGIN BEGIN LF:=TFMFILE↑;IF LF>127 THEN GOTO 11;GET(TFMFILE);
LF:=LF*256+TFMFILE↑;END;GET(TFMFILE);BEGIN LH:=TFMFILE↑;
IF LH>127 THEN GOTO 11;GET(TFMFILE);LH:=LH*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN BC:=TFMFILE↑;IF BC>127 THEN GOTO 11;GET(TFMFILE);
BC:=BC*256+TFMFILE↑;END;GET(TFMFILE);BEGIN EC:=TFMFILE↑;
IF EC>127 THEN GOTO 11;GET(TFMFILE);EC:=EC*256+TFMFILE↑;END;
IF(BC>EC+1)OR(EC>255)THEN GOTO 11;GET(TFMFILE);BEGIN NW:=TFMFILE↑;
IF NW>127 THEN GOTO 11;GET(TFMFILE);NW:=NW*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NH:=TFMFILE↑;IF NH>127 THEN GOTO 11;GET(TFMFILE);
NH:=NH*256+TFMFILE↑;END;GET(TFMFILE);BEGIN ND:=TFMFILE↑;
IF ND>127 THEN GOTO 11;GET(TFMFILE);ND:=ND*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NI:=TFMFILE↑;IF NI>127 THEN GOTO 11;GET(TFMFILE);
NI:=NI*256+TFMFILE↑;END;GET(TFMFILE);BEGIN NL:=TFMFILE↑;
IF NL>127 THEN GOTO 11;GET(TFMFILE);NL:=NL*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NK:=TFMFILE↑;IF NK>127 THEN GOTO 11;GET(TFMFILE);
NK:=NK*256+TFMFILE↑;END;GET(TFMFILE);BEGIN NE:=TFMFILE↑;
IF NE>127 THEN GOTO 11;GET(TFMFILE);NE:=NE*256+TFMFILE↑;END;
GET(TFMFILE);BEGIN NP:=TFMFILE↑;IF NP>127 THEN GOTO 11;GET(TFMFILE);
NP:=NP*256+TFMFILE↑;END;
IF LF<>6+LH+(EC-BC+1)+NW+NH+ND+NI+NL+NK+NE+NP THEN GOTO 11;END{:565};
{566:}LF:=LF-6-LH;IF NP<7 THEN LF:=LF+7-NP;
IF(FONTPTR=FONTMAX)OR(FMEMPTR+LF>FONTMEMSIZE)THEN{567:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(668);END;SPRINTCS(U);PRINTCHAR(61);PRINTFILENAM(NOM,AIRE,210);
IF S>=0 THEN BEGIN PRINT(608);PRINTSCALED(S);PRINT(266);
END ELSE IF S<>-1000 THEN BEGIN PRINT(669);PRINTINT(-S);END;PRINT(677);
BEGIN HELPPTR:=4;HELPLINE[3]:=678;HELPLINE[2]:=679;HELPLINE[1]:=680;
HELPLINE[0]:=681;END;ERROR;GOTO 30;END{:567};F:=FONTPTR+1;
CHARBASE[F]:=FMEMPTR-BC;WIDTHBASE[F]:=CHARBASE[F]+EC+1;
HEIGHTBASE[F]:=WIDTHBASE[F]+NW;DEPTHBASE[F]:=HEIGHTBASE[F]+NH;
ITALICBASE[F]:=DEPTHBASE[F]+ND;LIGKERNBASE[F]:=ITALICBASE[F]+NI;
KERNBASE[F]:=LIGKERNBASE[F]+NL;EXTENBASE[F]:=KERNBASE[F]+NK;
PARAMBASE[F]:=EXTENBASE[F]+NE{:566};{568:}BEGIN IF LH<2 THEN GOTO 11;
BEGIN GET(TFMFILE);A:=TFMFILE↑;QW.B0:=0+A+0;GET(TFMFILE);B:=TFMFILE↑;
QW.B1:=0+B+0;GET(TFMFILE);C:=TFMFILE↑;QW.B2:=0+C+0;GET(TFMFILE);
D:=TFMFILE↑;QW.B3:=0+D+0;FONTCHECK[F]:=QW;END;GET(TFMFILE);
BEGIN Z:=TFMFILE↑;IF Z>127 THEN GOTO 11;GET(TFMFILE);Z:=Z*256+TFMFILE↑;
END;GET(TFMFILE);Z:=Z*256+TFMFILE↑;GET(TFMFILE);
Z:=(Z*16)+(TFMFILE↑DIV 16);IF Z<65536 THEN GOTO 11;
WHILE LH>2 DO BEGIN GET(TFMFILE);GET(TFMFILE);GET(TFMFILE);GET(TFMFILE);
LH:=LH-1;END;FONTDSIZE[F]:=Z;
IF S<>-1000 THEN IF S>=0 THEN Z:=S ELSE Z:=XNOVERD(Z,-S,1000);
FONTSIZE[F]:=Z;END{:568};{569:}
FOR K:=FMEMPTR TO WIDTHBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
A:=TFMFILE↑;QW.B0:=0+A+0;GET(TFMFILE);B:=TFMFILE↑;QW.B1:=0+B+0;
GET(TFMFILE);C:=TFMFILE↑;QW.B2:=0+C+0;GET(TFMFILE);D:=TFMFILE↑;
QW.B3:=0+D+0;FONTINFO[K].QQQQ:=QW;END;
IF(A>=NW)OR(B DIV 16>=NH)OR(B MOD 16>=ND)OR(C DIV 4>=NI)THEN GOTO 11;
CASE C MOD 4 OF 1:IF D>=NL THEN GOTO 11;3:IF D>=NE THEN GOTO 11;2:{570:}
BEGIN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;
WHILE D<K+BC-FMEMPTR DO BEGIN QW:=FONTINFO[CHARBASE[F]+D].QQQQ;
IF((0+QW.B2-0)MOD 4)<>2 THEN GOTO 45;D:=0+QW.B3-0;END;
IF D=K+BC-FMEMPTR THEN GOTO 11;45:END{:570};OTHERS:END;END{:569};{571:}
BEGIN{572:}BEGIN ALPHA:=16*Z;BETA:=16;
WHILE Z>=8388608 DO BEGIN Z:=Z DIV 2;BETA:=BETA DIV 2;END;END{:572};
FOR K:=WIDTHBASE[F]TO LIGKERNBASE[F]-1 DO BEGIN GET(TFMFILE);
A:=TFMFILE↑;GET(TFMFILE);B:=TFMFILE↑;GET(TFMFILE);C:=TFMFILE↑;
GET(TFMFILE);D:=TFMFILE↑;
SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
IF A=0 THEN FONTINFO[K].INT:=SW ELSE IF A=255 THEN FONTINFO[K].INT:=SW-
ALPHA ELSE GOTO 11;END;IF FONTINFO[WIDTHBASE[F]].INT<>0 THEN GOTO 11;
IF FONTINFO[HEIGHTBASE[F]].INT<>0 THEN GOTO 11;
IF FONTINFO[DEPTHBASE[F]].INT<>0 THEN GOTO 11;
IF FONTINFO[ITALICBASE[F]].INT<>0 THEN GOTO 11;END{:571};{573:}
BEGIN FOR K:=LIGKERNBASE[F]TO KERNBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
A:=TFMFILE↑;QW.B0:=0+A+0;GET(TFMFILE);B:=TFMFILE↑;QW.B1:=0+B+0;
GET(TFMFILE);C:=TFMFILE↑;QW.B2:=0+C+0;GET(TFMFILE);D:=TFMFILE↑;
QW.B3:=0+D+0;FONTINFO[K].QQQQ:=QW;END;
BEGIN IF(B<BC)OR(B>EC)THEN GOTO 11 END;
IF C<128 THEN BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END ELSE IF D>=NK THEN
GOTO 11;END;IF(NL>0)AND(A<128)THEN GOTO 11;
FOR K:=KERNBASE[F]TO EXTENBASE[F]-1 DO BEGIN GET(TFMFILE);A:=TFMFILE↑;
GET(TFMFILE);B:=TFMFILE↑;GET(TFMFILE);C:=TFMFILE↑;GET(TFMFILE);
D:=TFMFILE↑;SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
IF A=0 THEN FONTINFO[K].INT:=SW ELSE IF A=255 THEN FONTINFO[K].INT:=SW-
ALPHA ELSE GOTO 11;END;END{:573};{574:}
FOR K:=EXTENBASE[F]TO PARAMBASE[F]-1 DO BEGIN BEGIN GET(TFMFILE);
A:=TFMFILE↑;QW.B0:=0+A+0;GET(TFMFILE);B:=TFMFILE↑;QW.B1:=0+B+0;
GET(TFMFILE);C:=TFMFILE↑;QW.B2:=0+C+0;GET(TFMFILE);D:=TFMFILE↑;
QW.B3:=0+D+0;FONTINFO[K].QQQQ:=QW;END;
IF A<>0 THEN BEGIN IF(A<BC)OR(A>EC)THEN GOTO 11 END;
IF B<>0 THEN BEGIN IF(B<BC)OR(B>EC)THEN GOTO 11 END;
IF C<>0 THEN BEGIN IF(C<BC)OR(C>EC)THEN GOTO 11 END;
BEGIN IF(D<BC)OR(D>EC)THEN GOTO 11 END;END{:574};{575:}
BEGIN FOR K:=1 TO NP DO IF K=1 THEN BEGIN GET(TFMFILE);SW:=TFMFILE↑;
IF SW>127 THEN SW:=SW-256;GET(TFMFILE);SW:=SW*256+TFMFILE↑;GET(TFMFILE);
SW:=SW*256+TFMFILE↑;GET(TFMFILE);
FONTINFO[PARAMBASE[F]].INT:=(SW*16)+(TFMFILE↑DIV 16);
END ELSE BEGIN GET(TFMFILE);A:=TFMFILE↑;GET(TFMFILE);B:=TFMFILE↑;
GET(TFMFILE);C:=TFMFILE↑;GET(TFMFILE);D:=TFMFILE↑;
SW:=(((((D*Z)DIV 256)+(C*Z))DIV 256)+(B*Z))DIV BETA;
IF A=0 THEN FONTINFO[PARAMBASE[F]+K-1].INT:=SW ELSE IF A=255 THEN
FONTINFO[PARAMBASE[F]+K-1].INT:=SW-ALPHA ELSE GOTO 11;END;
IF EOF(TFMFILE)THEN GOTO 11;
FOR K:=NP+1 TO 7 DO FONTINFO[PARAMBASE[F]+K-1].INT:=0;END{:575};{576:}
IF NP>=7 THEN FONTPARAMS[F]:=NP ELSE FONTPARAMS[F]:=7;
HYPHENCHAR[F]:=EQTB[4413].INT;SKEWCHAR[F]:=EQTB[4414].INT;
FONTNAME[F]:=NOM;FONTAREA[F]:=AIRE;FONTBC[F]:=BC;FONTEC[F]:=EC;
FONTGLUE[F]:=0;CHARBASE[F]:=0+CHARBASE[F]-0;
WIDTHBASE[F]:=0+WIDTHBASE[F]-0;LIGKERNBASE[F]:=0+LIGKERNBASE[F]-0;
KERNBASE[F]:=0+KERNBASE[F]-0;EXTENBASE[F]:=0+EXTENBASE[F]-0;
PARAMBASE[F]:=PARAMBASE[F]-1;FMEMPTR:=FMEMPTR+LF;FONTPTR:=F;G:=F;
GOTO 30{:576}{:562};11:{561:}
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(668);END;SPRINTCS(U);PRINTCHAR(61);PRINTFILENAM(NOM,AIRE,210);
IF S>=0 THEN BEGIN PRINT(608);PRINTSCALED(S);PRINT(266);
END ELSE IF S<>-1000 THEN BEGIN PRINT(669);PRINTINT(-S);END;
IF FILEOPENED THEN PRINT(670)ELSE PRINT(671);BEGIN HELPPTR:=5;
HELPLINE[4]:=672;HELPLINE[3]:=673;HELPLINE[2]:=674;HELPLINE[1]:=675;
HELPLINE[0]:=676;END;ERROR{:561};30:IF FILEOPENED THEN BCLOSE(TFMFILE);
READFONTINFO:=G;END;{:560}{581:}PROCEDURE CHARWARNING(F:INTERNALFONT;
C:EIGHTBITS);BEGIN IF EQTB[4402].INT>0 THEN BEGIN BEGINDIAGNOS;
PRINTNL(690);PRINTASCII(C);PRINT(691);PRINT(FONTNAME[F]);PRINTCHAR(33);
ENDDIAGNOSTI(FALSE);END;END;{:581}{582:}
FUNCTION NEWCHARACTER(F:INTERNALFONT;C:EIGHTBITS):HALFWORD;LABEL 10;
VAR P:HALFWORD;
BEGIN IF FONTBC[F]<=C THEN IF FONTEC[F]>=C THEN IF(FONTINFO[CHARBASE[F]
+0+C+0].QQQQ.B0>0)THEN BEGIN P:=GETAVAIL;MEM[P].HH.B0:=F;
MEM[P].HH.B1:=0+C+0;NEWCHARACTER:=P;GOTO 10;END;CHARWARNING(F,C);
NEWCHARACTER:=0;10:END;{:582}{597:}PROCEDURE ARYOUT(VAR F:FILE;
B:PACKEDBYTES;O,C:INTEGER);EXTERN;PROCEDURE WRITEDVI(A,B:DVIINDEX);
BEGIN ARYOUT(DVIFILE,DVIBUF,A DIV 4,(B+1-A)DIV 4);END;{:597}{598:}
PROCEDURE DVISWAP;
BEGIN IF DVILIMIT=DVIBUFSIZE THEN BEGIN WRITEDVI(0,HALFBUF-1);
DVILIMIT:=HALFBUF;DVIOFFSET:=DVIOFFSET+DVIBUFSIZE;DVIPTR:=0;
END ELSE BEGIN WRITEDVI(HALFBUF,DVIBUFSIZE-1);DVILIMIT:=DVIBUFSIZE;END;
DVIGONE:=DVIGONE+HALFBUF;END;{:598}{600:}PROCEDURE DVIFOUR(X:INTEGER);
BEGIN IF X>=0 THEN BEGIN DVIBUF[DVIPTR]:=X DIV 16777216;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END ELSE BEGIN X:=X+1073741824;X:=X+1073741824;
BEGIN DVIBUF[DVIPTR]:=(X DIV 16777216)+128;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;X:=X MOD 16777216;
BEGIN DVIBUF[DVIPTR]:=X DIV 65536;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;X:=X MOD 65536;
BEGIN DVIBUF[DVIPTR]:=X DIV 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=X MOD 256;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;{:600}{601:}
PROCEDURE DVIPOP(L:INTEGER);
BEGIN IF(L=DVIOFFSET+DVIPTR)AND(DVIPTR>0)THEN DVIPTR:=DVIPTR-1 ELSE
BEGIN DVIBUF[DVIPTR]:=142;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;{:601}{602:}
PROCEDURE DVIFONTDEF(F:INTERNALFONT);VAR K:POOLPOINTER;
BEGIN BEGIN DVIBUF[DVIPTR]:=243;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=F-1;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=0+FONTCHECK[F].B0-0;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=0+FONTCHECK[F].B1-0;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=0+FONTCHECK[F].B2-0;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=0+FONTCHECK[F].B3-0;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(FONTSIZE[F]);
DVIFOUR(FONTDSIZE[F]);
BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTAREA[F]+1]-STRSTART[FONTAREA[F]]);
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=(STRSTART[FONTNAME[F]+1]-STRSTART[FONTNAME[F]]);
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;{603:}
FOR K:=STRSTART[FONTAREA[F]]TO STRSTART[FONTAREA[F]+1]-1 DO BEGIN DVIBUF
[DVIPTR]:=STRPOOL[K];DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END;
FOR K:=STRSTART[FONTNAME[F]]TO STRSTART[FONTNAME[F]+1]-1 DO BEGIN DVIBUF
[DVIPTR]:=STRPOOL[K];DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END{:603};END;{:602}{607:}PROCEDURE MOVEMENT(W:SCALED;O:EIGHTBITS);
LABEL 10,40,45,2,1;VAR MSTATE:SMALLNUMBER;P,Q:HALFWORD;K:INTEGER;
BEGIN Q:=GETNODE(3);MEM[Q+1].INT:=W;MEM[Q+2].INT:=DVIOFFSET+DVIPTR;
IF O=157 THEN BEGIN MEM[Q].HH.RH:=DOWNPTR;DOWNPTR:=Q;
END ELSE BEGIN MEM[Q].HH.RH:=RIGHTPTR;RIGHTPTR:=Q;END;{611:}
P:=MEM[Q].HH.RH;MSTATE:=0;
WHILE P<>0 DO BEGIN IF MEM[P+1].INT=W THEN{612:}
CASE MSTATE+MEM[P].HH.LH OF 3,4,15,16:IF MEM[P+2].INT<DVIGONE THEN GOTO
45 ELSE{613:}BEGIN K:=MEM[P+2].INT-DVIOFFSET;
IF K<0 THEN K:=K+DVIBUFSIZE;DVIBUF[K]:=DVIBUF[K]+5;MEM[P].HH.LH:=1;
GOTO 40;END{:613};5,9,11:IF MEM[P+2].INT<DVIGONE THEN GOTO 45 ELSE{614:}
BEGIN K:=MEM[P+2].INT-DVIOFFSET;IF K<0 THEN K:=K+DVIBUFSIZE;
DVIBUF[K]:=DVIBUF[K]+10;MEM[P].HH.LH:=2;GOTO 40;END{:614};
1,2,8,13:GOTO 40;OTHERS:END{:612}
ELSE CASE MSTATE+MEM[P].HH.LH OF 1:MSTATE:=6;2:MSTATE:=12;8,13:GOTO 45;
OTHERS:END;P:=MEM[P].HH.RH;END;45:{:611};{610:}MEM[Q].HH.LH:=3;
IF ABS(W)>=8388608 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+3;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(W);GOTO 10;
END;IF ABS(W)>=32768 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+2;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
IF W<0 THEN W:=W+16777216;BEGIN DVIBUF[DVIPTR]:=W DIV 65536;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;W:=W MOD 65536;
GOTO 2;END;IF ABS(W)>=128 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+1;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
IF W<0 THEN W:=W+65536;GOTO 2;END;BEGIN DVIBUF[DVIPTR]:=O;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
IF W<0 THEN W:=W+256;GOTO 1;2:BEGIN DVIBUF[DVIPTR]:=W DIV 256;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
1:BEGIN DVIBUF[DVIPTR]:=W MOD 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;GOTO 10{:610};40:{609:}
MEM[Q].HH.LH:=MEM[P].HH.LH;
IF MEM[Q].HH.LH=1 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=O+4;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
WHILE MEM[Q].HH.RH<>P DO BEGIN Q:=MEM[Q].HH.RH;
CASE MEM[Q].HH.LH OF 3:MEM[Q].HH.LH:=5;4:MEM[Q].HH.LH:=6;OTHERS:END;END;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=O+9;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
WHILE MEM[Q].HH.RH<>P DO BEGIN Q:=MEM[Q].HH.RH;
CASE MEM[Q].HH.LH OF 3:MEM[Q].HH.LH:=4;5:MEM[Q].HH.LH:=6;OTHERS:END;END;
END{:609};10:END;{:607}{615:}PROCEDURE PRUNEMOVEMEN(L:INTEGER);
LABEL 30,10;VAR P:HALFWORD;
BEGIN WHILE DOWNPTR<>0 DO BEGIN IF MEM[DOWNPTR+2].INT<L THEN GOTO 30;
P:=DOWNPTR;DOWNPTR:=MEM[P].HH.RH;FREENODE(P,3);END;
30:WHILE RIGHTPTR<>0 DO BEGIN IF MEM[RIGHTPTR+2].INT<L THEN GOTO 10;
P:=RIGHTPTR;RIGHTPTR:=MEM[P].HH.RH;FREENODE(P,3);END;10:END;{:615}{618:}
PROCEDURE VLISTOUT;FORWARD;{:618}{619:}{1368:}
PROCEDURE SPECIALOUT(P:HALFWORD);VAR OLDSETTING:0..21;K:POOLPOINTER;
BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
OLDSETTING:=SELECTOR;SELECTOR:=21;
SHOWTOKENLIS(MEM[MEM[P+1].HH.RH].HH.RH,0,POOLSIZE-POOLPTR);
SELECTOR:=OLDSETTING;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR);END;
IF(POOLPTR-STRSTART[STRPTR])<256 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=239;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=(POOLPTR-STRSTART[STRPTR]);DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=242;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR((POOLPTR-STRSTART[STRPTR]));
END;
FOR K:=STRSTART[STRPTR]TO POOLPTR-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[K];
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
POOLPTR:=STRSTART[STRPTR];END;{:1368}{1370:}
PROCEDURE WRITEOUT(P:HALFWORD);VAR OLDSETTING:0..21;OLDMODE:INTEGER;
J:SMALLNUMBER;Q,R:HALFWORD;BEGIN{1371:}Q:=GETAVAIL;MEM[Q].HH.LH:=637;
R:=GETAVAIL;MEM[Q].HH.RH:=R;MEM[R].HH.LH:=6462;BEGINTOKENLI(Q,4);
BEGINTOKENLI(MEM[P+1].HH.RH,15);Q:=GETAVAIL;MEM[Q].HH.LH:=379;
BEGINTOKENLI(Q,4);OLDMODE:=CURLIST.MODEFIELD;CURLIST.MODEFIELD:=0;
CURCS:=WRITELOC;Q:=SCANTOKS(FALSE,TRUE);GETTOKEN;
IF CURTOK<>6462 THEN{1372:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(1152);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1153;HELPLINE[0]:=873;END;
ERROR;REPEAT GETTOKEN;UNTIL CURTOK=6462;END{:1372};
CURLIST.MODEFIELD:=OLDMODE;ENDTOKENLIST{:1371};OLDSETTING:=SELECTOR;
J:=MEM[P+1].HH.LH;
IF WRITEOPEN[J]THEN SELECTOR:=J ELSE BEGIN IF(J=17)AND(SELECTOR=19)THEN
SELECTOR:=18;PRINTNL(210);END;
SHOWTOKENLIS(MEM[DEFREF].HH.RH,0,10000000);PRINTLN;FLUSHLIST(DEFREF);
SELECTOR:=OLDSETTING;END;{:1370}{1373:}PROCEDURE OUTWHAT(P:HALFWORD);
VAR J:SMALLNUMBER;BEGIN CASE MEM[P].HH.B1 OF 0,1,2:{1374:}
IF NOT DOINGLEADERS THEN BEGIN J:=MEM[P+1].HH.LH;
IF MEM[P].HH.B1=1 THEN WRITEOUT(P)ELSE BEGIN IF WRITEOPEN[J]THEN ACLOSE(
WRITEFILE[J]);
IF MEM[P].HH.B1=2 THEN WRITEOPEN[J]:=FALSE ELSE IF J<16 THEN BEGIN
CURNAME:=MEM[P+1].HH.RH;CURAREA:=MEM[P+2].HH.LH;CUREXT:=MEM[P+2].HH.RH;
IF CUREXT=210 THEN CUREXT:=657;PACKFILENAME(CURNAME,CURAREA,CUREXT);
WHILE NOT AOPENOUT(WRITEFILE[J])DO PROMPTFILENA(1155,657);
WRITEOPEN[J]:=TRUE;END;END;END{:1374};3:SPECIALOUT(P);
OTHERS:CONFUSION(1154)END;END;{:1373}PROCEDURE HLISTOUT;
LABEL 21,13,14,15;VAR BASELINE:SCALED;LEFTEDGE:SCALED;
SAVEH,SAVEV:SCALED;THISBOX:HALFWORD;GORDER:GLUEORD;GSIGN:0..2;
P:HALFWORD;SAVELOC:INTEGER;LEADERBOX:HALFWORD;LEADERWD:SCALED;LX:SCALED;
OUTERDOINGLE:BOOLEAN;EDGE:SCALED;BEGIN THISBOX:=TEMPPTR;
GORDER:=MEM[THISBOX+5].HH.B1;GSIGN:=MEM[THISBOX+5].HH.B0;
P:=MEM[THISBOX+5].HH.RH;CURS:=CURS+1;
IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=141;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;IF CURS>MAXPUSH THEN MAXPUSH:=CURS;
SAVELOC:=DVIOFFSET+DVIPTR;BASELINE:=CURV;LEFTEDGE:=CURH;
WHILE P<>0 DO{620:}
21:IF(P>=HIMEMMIN)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH
,143);DVIH:=CURH;END;IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);
DVIV:=CURV;END;REPEAT F:=MEM[P].HH.B0;C:=MEM[P].HH.B1;
IF F<>DVIF THEN{621:}BEGIN IF NOT FONTUSED[F]THEN BEGIN DVIFONTDEF(F);
FONTUSED[F]:=TRUE;END;IF F<=64 THEN BEGIN DVIBUF[DVIPTR]:=F+170;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=235;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=F-1;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;DVIF:=F;
END{:621};IF C<128 THEN BEGIN DVIBUF[DVIPTR]:=0+C-0;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;
END ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=128;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=0+C-0;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;END;
CURH:=CURH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+C].QQQQ.B0].INT;
P:=MEM[P].HH.RH;UNTIL NOT(P>=HIMEMMIN);DVIH:=CURH;END ELSE{622:}
BEGIN CASE MEM[P].HH.B0 OF 0,1:{623:}
IF MEM[P+5].HH.RH=0 THEN CURH:=CURH+MEM[P+1].INT ELSE BEGIN SAVEH:=DVIH;
SAVEV:=DVIV;CURV:=BASELINE+MEM[P+4].INT;TEMPPTR:=P;EDGE:=CURH;
IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;DVIH:=SAVEH;DVIV:=SAVEV;
CURH:=EDGE+MEM[P+1].INT;CURV:=BASELINE;END{:623};
2:BEGIN RULEHT:=MEM[P+3].INT;RULEDP:=MEM[P+2].INT;RULEWD:=MEM[P+1].INT;
GOTO 14;END;8:{1366:}OUTWHAT(P){:1366};10:{625:}BEGIN G:=MEM[P+1].HH.LH;
RULEWD:=MEM[G+1].INT;
IF GSIGN<>0 THEN BEGIN IF GSIGN=1 THEN BEGIN IF MEM[G].HH.B0=GORDER THEN
RULEWD:=RULEWD+ROUND(MEM[THISBOX+6].GR*MEM[G+2].INT);
END ELSE BEGIN IF MEM[G].HH.B1=GORDER THEN RULEWD:=RULEWD-ROUND(MEM[
THISBOX+6].GR*MEM[G+3].INT);END;END;IF MEM[P].HH.B1>=100 THEN{626:}
BEGIN LEADERBOX:=MEM[P+1].HH.RH;
IF MEM[LEADERBOX].HH.B0=2 THEN BEGIN RULEHT:=MEM[LEADERBOX+3].INT;
RULEDP:=MEM[LEADERBOX+2].INT;GOTO 14;END;LEADERWD:=MEM[LEADERBOX+1].INT;
IF(LEADERWD>0)AND(RULEWD>0)THEN BEGIN EDGE:=CURH+RULEWD;LX:=0;{627:}
IF MEM[P].HH.B1=100 THEN BEGIN SAVEH:=CURH;
CURH:=LEFTEDGE+LEADERWD*((CURH-LEFTEDGE)DIV LEADERWD);
IF CURH<SAVEH THEN CURH:=CURH+LEADERWD;
END ELSE BEGIN LQ:=RULEWD DIV LEADERWD;LR:=RULEWD MOD LEADERWD;
IF MEM[P].HH.B1=101 THEN CURH:=CURH+(LR DIV 2)ELSE BEGIN LX:=(2*LR+LQ+1)
DIV(2*LQ+2);CURH:=CURH+((LR-(LQ-1)*LX)DIV 2);END;END{:627};
WHILE CURH+LEADERWD<=EDGE DO{628:}
BEGIN CURV:=BASELINE+MEM[LEADERBOX+4].INT;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
SAVEV:=DVIV;IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;
END;SAVEH:=DVIH;TEMPPTR:=LEADERBOX;OUTERDOINGLE:=DOINGLEADERS;
DOINGLEADERS:=TRUE;
IF MEM[LEADERBOX].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;
DOINGLEADERS:=OUTERDOINGLE;DVIV:=SAVEV;DVIH:=SAVEH;CURV:=SAVEV;
CURH:=SAVEH+LEADERWD+LX;END{:628};CURH:=EDGE;GOTO 15;END;END{:626};
GOTO 13;END{:625};11,9:CURH:=CURH+MEM[P+1].INT;6:{652:}
BEGIN MEM[2988]:=MEM[P+1];MEM[2988].HH.RH:=MEM[P].HH.RH;P:=2988;GOTO 21;
END{:652};OTHERS:END;GOTO 15;14:{624:}
IF(RULEHT=-1073741824)THEN RULEHT:=MEM[THISBOX+3].INT;
IF(RULEDP=-1073741824)THEN RULEDP:=MEM[THISBOX+2].INT;
RULEHT:=RULEHT+RULEDP;
IF(RULEHT>0)AND(RULEWD>0)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(
CURH-DVIH,143);DVIH:=CURH;END;CURV:=BASELINE+RULEDP;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
BEGIN DVIBUF[DVIPTR]:=132;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(RULEHT);DVIFOUR(RULEWD);
CURV:=BASELINE;DVIH:=DVIH+RULEWD;END{:624};13:CURH:=CURH+RULEWD;
15:P:=MEM[P].HH.RH;END{:622}{:620};PRUNEMOVEMEN(SAVELOC);
IF CURS>0 THEN DVIPOP(SAVELOC);CURS:=CURS-1;END;{:619}{629:}
PROCEDURE VLISTOUT;LABEL 13,14,15;VAR LEFTEDGE:SCALED;TOPEDGE:SCALED;
SAVEH,SAVEV:SCALED;THISBOX:HALFWORD;GORDER:GLUEORD;GSIGN:0..2;
P:HALFWORD;SAVELOC:INTEGER;LEADERBOX:HALFWORD;LEADERHT:SCALED;LX:SCALED;
OUTERDOINGLE:BOOLEAN;EDGE:SCALED;BEGIN THISBOX:=TEMPPTR;
GORDER:=MEM[THISBOX+5].HH.B1;GSIGN:=MEM[THISBOX+5].HH.B0;
P:=MEM[THISBOX+5].HH.RH;CURS:=CURS+1;
IF CURS>0 THEN BEGIN DVIBUF[DVIPTR]:=141;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;IF CURS>MAXPUSH THEN MAXPUSH:=CURS;
SAVELOC:=DVIOFFSET+DVIPTR;LEFTEDGE:=CURH;CURV:=CURV-MEM[THISBOX+3].INT;
TOPEDGE:=CURV;WHILE P<>0 DO{630:}
BEGIN IF(P>=HIMEMMIN)THEN CONFUSION(693)ELSE{631:}
BEGIN CASE MEM[P].HH.B0 OF 0,1:{632:}
IF MEM[P+5].HH.RH=0 THEN CURV:=CURV+MEM[P+3].INT+MEM[P+2].INT ELSE BEGIN
CURV:=CURV+MEM[P+3].INT;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
SAVEH:=DVIH;SAVEV:=DVIV;CURH:=LEFTEDGE+MEM[P+4].INT;TEMPPTR:=P;
IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;DVIH:=SAVEH;DVIV:=SAVEV;
CURV:=SAVEV+MEM[P+2].INT;CURH:=LEFTEDGE;END{:632};
2:BEGIN RULEHT:=MEM[P+3].INT;RULEDP:=MEM[P+2].INT;RULEWD:=MEM[P+1].INT;
GOTO 14;END;8:{1365:}OUTWHAT(P){:1365};10:{634:}BEGIN G:=MEM[P+1].HH.LH;
RULEHT:=MEM[G+1].INT;
IF GSIGN<>0 THEN BEGIN IF GSIGN=1 THEN BEGIN IF MEM[G].HH.B0=GORDER THEN
RULEHT:=RULEHT+ROUND(MEM[THISBOX+6].GR*MEM[G+2].INT);
END ELSE BEGIN IF MEM[G].HH.B1=GORDER THEN RULEHT:=RULEHT-ROUND(MEM[
THISBOX+6].GR*MEM[G+3].INT);END;END;IF MEM[P].HH.B1>=100 THEN{635:}
BEGIN LEADERBOX:=MEM[P+1].HH.RH;
IF MEM[LEADERBOX].HH.B0=2 THEN BEGIN RULEWD:=MEM[LEADERBOX+1].INT;
RULEDP:=0;GOTO 14;END;
LEADERHT:=MEM[LEADERBOX+3].INT+MEM[LEADERBOX+2].INT;
IF(LEADERHT>0)AND(RULEHT>0)THEN BEGIN EDGE:=CURV+RULEHT;LX:=0;{636:}
IF MEM[P].HH.B1=100 THEN BEGIN SAVEV:=CURV;
CURV:=TOPEDGE+LEADERHT*((CURV-TOPEDGE)DIV LEADERHT);
IF CURV<SAVEV THEN CURV:=CURV+LEADERHT;
END ELSE BEGIN LQ:=RULEHT DIV LEADERHT;LR:=RULEHT MOD LEADERHT;
IF MEM[P].HH.B1=101 THEN CURV:=CURV+(LR DIV 2)ELSE BEGIN LX:=(2*LR+LQ+1)
DIV(2*LQ+2);CURV:=CURV+((LR-(LQ-1)*LX)DIV 2);END;END{:636};
WHILE CURV+LEADERHT<=EDGE DO{637:}
BEGIN CURH:=LEFTEDGE+MEM[LEADERBOX+4].INT;
IF CURH<>DVIH THEN BEGIN MOVEMENT(CURH-DVIH,143);DVIH:=CURH;END;
SAVEH:=DVIH;CURV:=CURV+MEM[LEADERBOX+3].INT;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
SAVEV:=DVIV;TEMPPTR:=LEADERBOX;OUTERDOINGLE:=DOINGLEADERS;
DOINGLEADERS:=TRUE;
IF MEM[LEADERBOX].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;
DOINGLEADERS:=OUTERDOINGLE;DVIV:=SAVEV;DVIH:=SAVEH;CURH:=SAVEH;
CURV:=SAVEV-MEM[LEADERBOX+3].INT+LEADERHT+LX;END{:637};CURV:=EDGE;
GOTO 15;END;END{:635};GOTO 13;END{:634};11:CURV:=CURV+MEM[P+1].INT;
OTHERS:END;GOTO 15;14:{633:}
IF(RULEWD=-1073741824)THEN RULEWD:=MEM[THISBOX+1].INT;
RULEHT:=RULEHT+RULEDP;CURV:=CURV+RULEHT;
IF(RULEHT>0)AND(RULEWD>0)THEN BEGIN IF CURH<>DVIH THEN BEGIN MOVEMENT(
CURH-DVIH,143);DVIH:=CURH;END;
IF CURV<>DVIV THEN BEGIN MOVEMENT(CURV-DVIV,157);DVIV:=CURV;END;
BEGIN DVIBUF[DVIPTR]:=137;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(RULEHT);DVIFOUR(RULEWD);END;
GOTO 15{:633};13:CURV:=CURV+RULEHT;END{:631};15:P:=MEM[P].HH.RH;
END{:630};PRUNEMOVEMEN(SAVELOC);IF CURS>0 THEN DVIPOP(SAVELOC);
CURS:=CURS-1;END;{:629}{638:}PROCEDURE SHIPOUT(P:HALFWORD);LABEL 30;
VAR PAGELOC:INTEGER;J,K:0..9;S:POOLPOINTER;OLDSETTING:0..21;
BEGIN IF EQTB[4401].INT>0 THEN BEGIN PRINTNL(210);PRINTLN;PRINT(694);
END;IF TERMOFFSET>MAXPRINTLINE-9 THEN PRINTLN ELSE IF(TERMOFFSET>0)OR(
FILEOFFSET>0)THEN PRINTCHAR(32);PRINTCHAR(91);J:=9;
WHILE(EQTB[4417+J].INT=0)AND(J>0)DO J:=J-1;
FOR K:=0 TO J DO BEGIN PRINTINT(EQTB[4417+K].INT);
IF K<J THEN PRINTCHAR(46);END;BREAK(TTY);
IF EQTB[4401].INT>0 THEN BEGIN PRINTCHAR(93);BEGINDIAGNOS;SHOWBOX(P);
ENDDIAGNOSTI(TRUE);END;{640:}{641:}
IF(MEM[P+3].INT>1073741823)OR(MEM[P+2].INT>1073741823)OR(MEM[P+3].INT+
MEM[P+2].INT+EQTB[4820].INT>1073741823)OR(MEM[P+1].INT+EQTB[4819].INT>
1073741823)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(698);END;BEGIN HELPPTR:=2;HELPLINE[1]:=699;
HELPLINE[0]:=700;END;ERROR;IF EQTB[4401].INT<=0 THEN BEGIN BEGINDIAGNOS;
PRINTNL(701);SHOWBOX(P);ENDDIAGNOSTI(TRUE);END;GOTO 30;END;
IF MEM[P+3].INT+MEM[P+2].INT+EQTB[4820].INT>MAXV THEN MAXV:=MEM[P+3].INT
+MEM[P+2].INT+EQTB[4820].INT;
IF MEM[P+1].INT+EQTB[4819].INT>MAXH THEN MAXH:=MEM[P+1].INT+EQTB[4819].
INT{:641};{617:}DVIH:=0;DVIV:=0;CURH:=EQTB[4819].INT;DVIF:=0;CURS:=-1;
IF OUTPUTFILENA=0 THEN BEGIN IF JOBNAME=0 THEN OPENLOGFILE;
PACKJOBNAME(660);WHILE NOT BOPENOUT(DVIFILE)DO PROMPTFILENA(661,660);
OUTPUTFILENA:=BMAKENAMESTR(DVIFILE);END;
IF TOTALPAGES=0 THEN BEGIN BEGIN DVIBUF[DVIPTR]:=247;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;BEGIN DVIBUF[DVIPTR]:=2;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(25400000);
DVIFOUR(473628672);PREPAREMAG;DVIFOUR(EQTB[4384].INT);
OLDSETTING:=SELECTOR;SELECTOR:=21;PRINT(692);PRINTINT(EQTB[4390].INT);
PRINTCHAR(46);PRINTTWO(EQTB[4389].INT);PRINTCHAR(46);
PRINTTWO(EQTB[4388].INT);PRINTCHAR(58);PRINTTWO(EQTB[4387].INT DIV 60);
PRINTTWO(EQTB[4387].INT MOD 60);SELECTOR:=OLDSETTING;
BEGIN DVIBUF[DVIPTR]:=(POOLPTR-STRSTART[STRPTR]);DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
FOR S:=STRSTART[STRPTR]TO POOLPTR-1 DO BEGIN DVIBUF[DVIPTR]:=STRPOOL[S];
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
POOLPTR:=STRSTART[STRPTR];END{:617};PAGELOC:=DVIOFFSET+DVIPTR;
BEGIN DVIBUF[DVIPTR]:=139;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
FOR K:=0 TO 9 DO DVIFOUR(EQTB[4417+K].INT);DVIFOUR(LASTBOP);
LASTBOP:=PAGELOC;CURV:=MEM[P+3].INT+EQTB[4820].INT;TEMPPTR:=P;
IF MEM[P].HH.B0=1 THEN VLISTOUT ELSE HLISTOUT;BEGIN DVIBUF[DVIPTR]:=140;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;
TOTALPAGES:=TOTALPAGES+1;30:{:640};
IF EQTB[4401].INT<=0 THEN PRINTCHAR(93);DEADCYCLES:=0;BREAK(TTY);{639:}
IF EQTB[4398].INT>1 THEN BEGIN PRINTNL(695);PRINTINT(VARUSED);
PRINTCHAR(38);PRINTINT(DYNUSED);PRINTCHAR(59);END;FLUSHNODELIS(P);
IF EQTB[4398].INT>1 THEN BEGIN PRINT(696);PRINTINT(VARUSED);
PRINTCHAR(38);PRINTINT(DYNUSED);PRINT(697);
PRINTINT(HIMEMMIN-LOMEMMAX-1);PRINTLN;END;{:639};END;{:638}{645:}
PROCEDURE SCANSPEC;LABEL 40;
BEGIN IF SCANKEYWORD(708)THEN SAVESTACK[SAVEPTR+0].INT:=0 ELSE IF
SCANKEYWORD(709)THEN SAVESTACK[SAVEPTR+0].INT:=1 ELSE BEGIN SAVESTACK[
SAVEPTR+0].INT:=1;SAVESTACK[SAVEPTR+1].INT:=0;GOTO 40;END;
SCANDIMEN(FALSE,FALSE,FALSE);SAVESTACK[SAVEPTR+1].INT:=CURVAL;
40:SAVEPTR:=SAVEPTR+2;SCANLEFTBRAC;END;{:645}{649:}
FUNCTION HPACK(P:HALFWORD;W:SCALED;M:SMALLNUMBER):HALFWORD;
LABEL 21,50,10;VAR R:HALFWORD;Q:HALFWORD;H,D,X:SCALED;S:SCALED;
G:HALFWORD;O:GLUEORD;F:INTERNALFONT;I:FOURQUARTERS;HD:EIGHTBITS;
B:INTEGER;BEGIN R:=GETNODE(7);MEM[R].HH.B0:=0;MEM[R].HH.B1:=0;
MEM[R+4].INT:=0;Q:=R+5;MEM[Q].HH.RH:=P;H:=0;{650:}D:=0;X:=0;
TOTALSTRETCH[0]:=0;TOTALSHRINK[0]:=0;TOTALSTRETCH[1]:=0;
TOTALSHRINK[1]:=0;TOTALSTRETCH[2]:=0;TOTALSHRINK[2]:=0;
TOTALSTRETCH[3]:=0;TOTALSHRINK[3]:=0{:650};WHILE P<>0 DO{651:}
BEGIN 21:WHILE(P>=HIMEMMIN)DO{654:}BEGIN F:=MEM[P].HH.B0;
I:=FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ;HD:=0+I.B1-0;
X:=X+FONTINFO[WIDTHBASE[F]+I.B0].INT;
S:=FONTINFO[HEIGHTBASE[F]+(HD)DIV 16].INT;IF S>H THEN H:=S;
S:=FONTINFO[DEPTHBASE[F]+(HD)MOD 16].INT;IF S>D THEN D:=S;
P:=MEM[P].HH.RH;END{:654};
IF P<>0 THEN BEGIN CASE MEM[P].HH.B0 OF 0,1,2,13:{653:}
BEGIN X:=X+MEM[P+1].INT;
IF MEM[P].HH.B0>=2 THEN S:=0 ELSE S:=MEM[P+4].INT;
IF MEM[P+3].INT-S>H THEN H:=MEM[P+3].INT-S;
IF MEM[P+2].INT+S>D THEN D:=MEM[P+2].INT+S;END{:653};
3,4,5:IF ADJUSTTAIL<>0 THEN{655:}
BEGIN WHILE MEM[Q].HH.RH<>P DO Q:=MEM[Q].HH.RH;
IF MEM[P].HH.B0=5 THEN BEGIN MEM[ADJUSTTAIL].HH.RH:=MEM[P+1].INT;
WHILE MEM[ADJUSTTAIL].HH.RH<>0 DO ADJUSTTAIL:=MEM[ADJUSTTAIL].HH.RH;
P:=MEM[P].HH.RH;FREENODE(MEM[Q].HH.RH,2);
END ELSE BEGIN MEM[ADJUSTTAIL].HH.RH:=P;ADJUSTTAIL:=P;P:=MEM[P].HH.RH;
END;MEM[Q].HH.RH:=P;P:=Q;END{:655};8:{1360:}{:1360};10:{656:}
BEGIN G:=MEM[P+1].HH.LH;X:=X+MEM[G+1].INT;O:=MEM[G].HH.B0;
TOTALSTRETCH[O]:=TOTALSTRETCH[O]+MEM[G+2].INT;O:=MEM[G].HH.B1;
TOTALSHRINK[O]:=TOTALSHRINK[O]+MEM[G+3].INT;
IF MEM[P].HH.B1>=100 THEN BEGIN G:=MEM[P+1].HH.RH;
IF MEM[G+3].INT>H THEN H:=MEM[G+3].INT;
IF MEM[G+2].INT>D THEN D:=MEM[G+2].INT;END;END{:656};
11,9:X:=X+MEM[P+1].INT;6:{652:}BEGIN MEM[2988]:=MEM[P+1];
MEM[2988].HH.RH:=MEM[P].HH.RH;P:=2988;GOTO 21;END{:652};OTHERS:END;
P:=MEM[P].HH.RH;END;END{:651};
IF ADJUSTTAIL<>0 THEN MEM[ADJUSTTAIL].HH.RH:=0;MEM[R+3].INT:=H;
MEM[R+2].INT:=D;{657:}IF M=1 THEN W:=X+W;MEM[R+1].INT:=W;X:=W-X;
IF X=0 THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;MEM[R+6].GR:=0.0;
GOTO 10;END ELSE IF X>0 THEN{658:}BEGIN{659:}
IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE IF TOTALSTRETCH[2]<>0 THEN O:=2
ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1 ELSE O:=0{:659};MEM[R+5].HH.B1:=O;
MEM[R+5].HH.B0:=1;
IF TOTALSTRETCH[O]<>0 THEN MEM[R+6].GR:=X/TOTALSTRETCH[O]ELSE BEGIN MEM[
R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(EQTB[4393].INT<10000)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{660:}
BEGIN B:=BADNESS(X,TOTALSTRETCH[0]);
IF B>EQTB[4393].INT THEN BEGIN PRINTLN;
IF B>100 THEN PRINTNL(710)ELSE PRINTNL(711);PRINT(712);PRINTINT(B);
GOTO 50;END;END{:660};GOTO 10;END{:658}ELSE{664:}BEGIN{665:}
IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF TOTALSHRINK[2]<>0 THEN O:=2 ELSE
IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=0{:665};MEM[R+5].HH.B1:=O;
MEM[R+5].HH.B0:=2;
IF TOTALSHRINK[O]<>0 THEN MEM[R+6].GR:=(-X)/TOTALSHRINK[O]ELSE BEGIN MEM
[R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(TOTALSHRINK[O]<-X)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN BEGIN MEM[R+6].
GR:=1.0;{666:}
IF(-X-TOTALSHRINK[0]>EQTB[4809].INT)OR(EQTB[4393].INT<100)THEN BEGIN IF(
EQTB[4817].INT>0)AND(-X-TOTALSHRINK[0]>EQTB[4809].INT)THEN BEGIN WHILE
MEM[Q].HH.RH<>0 DO Q:=MEM[Q].HH.RH;MEM[Q].HH.RH:=NEWRULE;
MEM[MEM[Q].HH.RH+1].INT:=EQTB[4817].INT;END;PRINTLN;PRINTNL(718);
PRINTSCALED(-X-TOTALSHRINK[0]);PRINT(719);GOTO 50;END{:666};
END ELSE IF(EQTB[4393].INT<100)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{667:}
BEGIN B:=BADNESS(-X,TOTALSHRINK[0]);
IF B>EQTB[4393].INT THEN BEGIN PRINTLN;PRINTNL(720);PRINTINT(B);GOTO 50;
END;END{:667};GOTO 10;END{:664}{:657};50:{663:}
IF OUTPUTACTIVE THEN PRINT(713)ELSE BEGIN IF PACKBEGINLIN<>0 THEN BEGIN
IF PACKBEGINLIN>0 THEN PRINT(714)ELSE PRINT(715);
PRINTINT(ABS(PACKBEGINLIN));PRINT(716);END ELSE PRINT(717);
PRINTINT(LINE);IF PAGE>1 THEN BEGIN PRINT(463);PRINTINT(PAGE);END;END;
PRINTLN;FONTINSHORTD:=0;SHORTDISPLAY(MEM[R+5].HH.RH);PRINTLN;
BEGINDIAGNOS;SHOWBOX(R);ENDDIAGNOSTI(TRUE){:663};10:HPACK:=R;END;{:649}
{668:}FUNCTION VPACKAGE(P:HALFWORD;H:SCALED;M:SMALLNUMBER;
L:SCALED):HALFWORD;LABEL 50,10;VAR R:HALFWORD;W,D,X:SCALED;S:SCALED;
G:HALFWORD;O:GLUEORD;B:INTEGER;BEGIN R:=GETNODE(7);MEM[R].HH.B0:=1;
MEM[R].HH.B1:=0;MEM[R+4].INT:=0;MEM[R+5].HH.RH:=P;W:=0;{650:}D:=0;X:=0;
TOTALSTRETCH[0]:=0;TOTALSHRINK[0]:=0;TOTALSTRETCH[1]:=0;
TOTALSHRINK[1]:=0;TOTALSTRETCH[2]:=0;TOTALSHRINK[2]:=0;
TOTALSTRETCH[3]:=0;TOTALSHRINK[3]:=0{:650};WHILE P<>0 DO{669:}
BEGIN IF(P>=HIMEMMIN)THEN CONFUSION(721)ELSE CASE MEM[P].HH.B0 OF 0,1,2,
13:{670:}BEGIN X:=X+D+MEM[P+3].INT;D:=MEM[P+2].INT;
IF MEM[P].HH.B0>=2 THEN S:=0 ELSE S:=MEM[P+4].INT;
IF MEM[P+1].INT+S>W THEN W:=MEM[P+1].INT+S;END{:670};8:{1359:}{:1359};
10:{671:}BEGIN X:=X+D;D:=0;G:=MEM[P+1].HH.LH;X:=X+MEM[G+1].INT;
O:=MEM[G].HH.B0;TOTALSTRETCH[O]:=TOTALSTRETCH[O]+MEM[G+2].INT;
O:=MEM[G].HH.B1;TOTALSHRINK[O]:=TOTALSHRINK[O]+MEM[G+3].INT;
IF MEM[P].HH.B1>=100 THEN BEGIN G:=MEM[P+1].HH.RH;
IF MEM[G+1].INT>W THEN W:=MEM[G+1].INT;END;END{:671};
11:BEGIN X:=X+D+MEM[P+1].INT;D:=0;END;OTHERS:END;P:=MEM[P].HH.RH;
END{:669};MEM[R+1].INT:=W;IF D>L THEN BEGIN X:=X+D-L;MEM[R+2].INT:=L;
END ELSE MEM[R+2].INT:=D;{672:}IF M=1 THEN H:=X+H;MEM[R+3].INT:=H;
X:=H-X;IF X=0 THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
MEM[R+6].GR:=0.0;GOTO 10;END ELSE IF X>0 THEN{673:}BEGIN{659:}
IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE IF TOTALSTRETCH[2]<>0 THEN O:=2
ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1 ELSE O:=0{:659};MEM[R+5].HH.B1:=O;
MEM[R+5].HH.B0:=1;
IF TOTALSTRETCH[O]<>0 THEN MEM[R+6].GR:=X/TOTALSTRETCH[O]ELSE BEGIN MEM[
R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(EQTB[4394].INT<10000)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{674:}
BEGIN B:=BADNESS(X,TOTALSTRETCH[0]);
IF B>EQTB[4394].INT THEN BEGIN PRINTLN;
IF B>100 THEN PRINTNL(710)ELSE PRINTNL(711);PRINT(722);PRINTINT(B);
GOTO 50;END;END{:674};GOTO 10;END{:673}ELSE{676:}BEGIN{665:}
IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF TOTALSHRINK[2]<>0 THEN O:=2 ELSE
IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=0{:665};MEM[R+5].HH.B1:=O;
MEM[R+5].HH.B0:=2;
IF TOTALSHRINK[O]<>0 THEN MEM[R+6].GR:=(-X)/TOTALSHRINK[O]ELSE BEGIN MEM
[R+5].HH.B0:=0;MEM[R+6].GR:=0.0;END;
IF(TOTALSHRINK[O]<-X)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN BEGIN MEM[R+6].
GR:=1.0;{677:}
IF(-X-TOTALSHRINK[0]>EQTB[4810].INT)OR(EQTB[4394].INT<100)THEN BEGIN
PRINTLN;PRINTNL(723);PRINTSCALED(-X-TOTALSHRINK[0]);PRINT(724);GOTO 50;
END{:677};
END ELSE IF(EQTB[4394].INT<100)AND(O=0)AND(MEM[R+5].HH.RH<>0)THEN{678:}
BEGIN B:=BADNESS(-X,TOTALSHRINK[0]);
IF B>EQTB[4394].INT THEN BEGIN PRINTLN;PRINTNL(725);PRINTINT(B);GOTO 50;
END;END{:678};GOTO 10;END{:676}{:672};50:{675:}
IF OUTPUTACTIVE THEN PRINT(713)ELSE BEGIN IF PACKBEGINLIN<>0 THEN BEGIN
PRINT(715);PRINTINT(ABS(PACKBEGINLIN));PRINT(716);END ELSE PRINT(717);
PRINTINT(LINE);IF PAGE>1 THEN BEGIN PRINT(463);PRINTINT(PAGE);END;
PRINTLN;END;BEGINDIAGNOS;SHOWBOX(R);ENDDIAGNOSTI(TRUE){:675};
10:VPACKAGE:=R;END;{:668}{679:}PROCEDURE APPENDTOVLIS(B:HALFWORD);
VAR D:SCALED;P:HALFWORD;
BEGIN IF CURLIST.AUXFIELD>-65536000 THEN BEGIN D:=MEM[EQTB[2627].HH.RH+1
].INT-CURLIST.AUXFIELD-MEM[B+3].INT;
IF D<EQTB[4803].INT THEN P:=NEWPARAMGLUE(0)ELSE BEGIN P:=NEWSKIPPARAM(1)
;MEM[TEMPPTR+1].INT:=D;END;MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;END;MEM[CURLIST.TAILFIELD].HH.RH:=B;
CURLIST.TAILFIELD:=B;CURLIST.AUXFIELD:=MEM[B+2].INT;END;{:679}{686:}
FUNCTION NEWNOAD:HALFWORD;VAR P:HALFWORD;BEGIN P:=GETNODE(4);
MEM[P].HH.B0:=16;MEM[P].HH.B1:=0;MEM[P+1].HH:=EMPTYFIELD;
MEM[P+3].HH:=EMPTYFIELD;MEM[P+2].HH:=EMPTYFIELD;NEWNOAD:=P;END;{:686}
{688:}FUNCTION NEWSTYLE(S:SMALLNUMBER):HALFWORD;VAR P:HALFWORD;
BEGIN P:=GETNODE(3);MEM[P].HH.B0:=14;MEM[P].HH.B1:=S;MEM[P+1].INT:=0;
MEM[P+2].INT:=0;NEWSTYLE:=P;END;{:688}{689:}FUNCTION NEWCHOICE:HALFWORD;
VAR P:HALFWORD;BEGIN P:=GETNODE(3);MEM[P].HH.B0:=15;MEM[P].HH.B1:=0;
MEM[P+1].HH.LH:=0;MEM[P+1].HH.RH:=0;MEM[P+2].HH.LH:=0;MEM[P+2].HH.RH:=0;
NEWCHOICE:=P;END;{:689}{693:}PROCEDURE SHOWINFO;
BEGIN SHOWNODELIST(MEM[TEMPPTR].HH.LH);END;{:693}{704:}
FUNCTION FRACTIONRULE(T:SCALED):HALFWORD;VAR P:HALFWORD;
BEGIN P:=NEWRULE;MEM[P+3].INT:=T;MEM[P+2].INT:=0;FRACTIONRULE:=P;END;
{:704}{705:}FUNCTION OVERBAR(B:HALFWORD;K,T:SCALED):HALFWORD;
VAR P,Q:HALFWORD;BEGIN P:=NEWKERN(K);MEM[P].HH.RH:=B;Q:=FRACTIONRULE(T);
MEM[Q].HH.RH:=P;P:=NEWKERN(T);MEM[P].HH.RH:=Q;
OVERBAR:=VPACKAGE(P,0,1,1073741823);END;{:705}{706:}{709:}
FUNCTION CHARBOX(F:INTERNALFONT;C:QUARTERWORD):HALFWORD;
VAR Q:FOURQUARTERS;HD:EIGHTBITS;B,P:HALFWORD;
BEGIN Q:=FONTINFO[CHARBASE[F]+C].QQQQ;HD:=0+Q.B1-0;B:=NEWNULLBOX;
MEM[B+1].INT:=FONTINFO[WIDTHBASE[F]+Q.B0].INT+FONTINFO[ITALICBASE[F]+(0+
Q.B2-0)DIV 4].INT;MEM[B+3].INT:=FONTINFO[HEIGHTBASE[F]+(HD)DIV 16].INT;
MEM[B+2].INT:=FONTINFO[DEPTHBASE[F]+(HD)MOD 16].INT;P:=GETAVAIL;
MEM[P].HH.B1:=C;MEM[P].HH.B0:=F;MEM[B+5].HH.RH:=P;CHARBOX:=B;END;{:709}
{711:}PROCEDURE STACKINTOBOX(B:HALFWORD;F:INTERNALFONT;C:QUARTERWORD);
VAR P:HALFWORD;BEGIN P:=CHARBOX(F,C);MEM[P].HH.RH:=MEM[B+5].HH.RH;
MEM[B+5].HH.RH:=P;MEM[B+3].INT:=MEM[P+3].INT;END;{:711}{712:}
FUNCTION HEIGHTPLUSDE(F:INTERNALFONT;C:QUARTERWORD):SCALED;
VAR Q:FOURQUARTERS;HD:EIGHTBITS;BEGIN Q:=FONTINFO[CHARBASE[F]+C].QQQQ;
HD:=0+Q.B1-0;
HEIGHTPLUSDE:=FONTINFO[HEIGHTBASE[F]+(HD)DIV 16].INT+FONTINFO[DEPTHBASE[
F]+(HD)MOD 16].INT;END;{:712}FUNCTION VARDELIMITER(D:HALFWORD;
S:SMALLNUMBER;V:SCALED):HALFWORD;LABEL 40,22;VAR B:HALFWORD;
F,G:INTERNALFONT;C,X,Y:QUARTERWORD;M,N:INTEGER;U:SCALED;W:SCALED;
Q:FOURQUARTERS;HD:EIGHTBITS;R:FOURQUARTERS;Z:SMALLNUMBER;
LARGEATTEMPT:BOOLEAN;BEGIN F:=0;W:=0;LARGEATTEMPT:=FALSE;
Z:=MEM[D].QQQQ.B0;X:=MEM[D].QQQQ.B1;WHILE TRUE DO BEGIN{707:}
IF(Z<>0)OR(X<>0)THEN BEGIN Z:=Z+S+16;REPEAT Z:=Z-16;
G:=EQTB[3679+Z].HH.RH;IF G<>0 THEN{708:}BEGIN Y:=X;
22:IF(0+Y-0>=FONTBC[G])AND(0+Y-0<=FONTEC[G])THEN BEGIN Q:=FONTINFO[
CHARBASE[G]+Y].QQQQ;
IF(Q.B0>0)THEN BEGIN IF((0+Q.B2-0)MOD 4)=3 THEN BEGIN F:=G;C:=Y;GOTO 40;
END;HD:=0+Q.B1-0;
U:=FONTINFO[HEIGHTBASE[G]+(HD)DIV 16].INT+FONTINFO[DEPTHBASE[G]+(HD)MOD
16].INT;IF U>W THEN BEGIN F:=G;C:=Y;W:=U;IF U>=V THEN GOTO 40;END;
IF((0+Q.B2-0)MOD 4)=2 THEN BEGIN Y:=Q.B3;GOTO 22;END;END;END;END{:708};
UNTIL Z<16;END{:707};IF LARGEATTEMPT THEN GOTO 40;LARGEATTEMPT:=TRUE;
Z:=MEM[D].QQQQ.B2;X:=MEM[D].QQQQ.B3;END;40:IF F<>0 THEN{710:}
IF((0+Q.B2-0)MOD 4)=3 THEN{713:}BEGIN B:=NEWNULLBOX;MEM[B].HH.B0:=1;
R:=FONTINFO[EXTENBASE[F]+Q.B3].QQQQ;{714:}C:=R.B3;U:=HEIGHTPLUSDE(F,C);
W:=0;Q:=FONTINFO[CHARBASE[F]+C].QQQQ;
MEM[B+1].INT:=FONTINFO[WIDTHBASE[F]+Q.B0].INT+FONTINFO[ITALICBASE[F]+(0+
Q.B2-0)DIV 4].INT;C:=R.B2;IF C<>0 THEN W:=W+HEIGHTPLUSDE(F,C);C:=R.B1;
IF C<>0 THEN W:=W+HEIGHTPLUSDE(F,C);C:=R.B0;
IF C<>0 THEN W:=W+HEIGHTPLUSDE(F,C);N:=0;
IF U>0 THEN WHILE W<V DO BEGIN W:=W+U;N:=N+1;IF R.B1<>0 THEN W:=W+U;
END{:714};C:=R.B2;IF C<>0 THEN STACKINTOBOX(B,F,C);C:=R.B3;
FOR M:=1 TO N DO STACKINTOBOX(B,F,C);C:=R.B1;
IF C<>0 THEN BEGIN STACKINTOBOX(B,F,C);C:=R.B3;
FOR M:=1 TO N DO STACKINTOBOX(B,F,C);END;C:=R.B0;
IF C<>0 THEN STACKINTOBOX(B,F,C);MEM[B+2].INT:=W-MEM[B+3].INT;END{:713}
ELSE B:=CHARBOX(F,C){:710}ELSE BEGIN B:=NEWNULLBOX;
MEM[B+1].INT:=EQTB[4812].INT;END;
MEM[B+4].INT:=HALF(MEM[B+3].INT-MEM[B+2].INT)-FONTINFO[22+PARAMBASE[EQTB
[3681+S].HH.RH]].INT;VARDELIMITER:=B;END;{:706}{715:}
FUNCTION REBOX(B:HALFWORD;W:SCALED):HALFWORD;VAR P:HALFWORD;
F:INTERNALFONT;V:SCALED;
BEGIN IF(MEM[B+1].INT<>W)AND(MEM[B+5].HH.RH<>0)THEN BEGIN IF MEM[B].HH.
B0=1 THEN B:=HPACK(B,0,1);P:=MEM[B+5].HH.RH;
IF((P>=HIMEMMIN))AND(MEM[P].HH.RH=0)THEN BEGIN F:=MEM[P].HH.B0;
V:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
;IF V<>MEM[B+1].INT THEN MEM[P].HH.RH:=NEWKERN(MEM[B+1].INT-V);END;
FREENODE(B,7);B:=NEWGLUE(13);MEM[B].HH.RH:=P;
WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=NEWGLUE(13);
REBOX:=HPACK(B,W,0);END ELSE BEGIN MEM[B+1].INT:=W;REBOX:=B;END;END;
{:715}{716:}FUNCTION MATHGLUE(G:HALFWORD;M:SCALED):HALFWORD;
VAR P:HALFWORD;N:INTEGER;F:SCALED;BEGIN N:=XOVERN(M,65536);F:=REMAINDER;
P:=GETNODE(4);
MEM[P+1].INT:=NXPLUSY(N,MEM[G+1].INT,XNOVERD(MEM[G+1].INT,F,65536));
MEM[P].HH.B0:=MEM[G].HH.B0;
IF MEM[P].HH.B0=0 THEN MEM[P+2].INT:=NXPLUSY(N,MEM[G+2].INT,XNOVERD(MEM[
G+2].INT,F,65536))ELSE MEM[P+2].INT:=MEM[G+2].INT;
MEM[P].HH.B1:=MEM[G].HH.B1;
IF MEM[P].HH.B1=0 THEN MEM[P+3].INT:=NXPLUSY(N,MEM[G+3].INT,XNOVERD(MEM[
G+3].INT,F,65536))ELSE MEM[P+3].INT:=MEM[G+3].INT;MATHGLUE:=P;END;{:716}
{717:}PROCEDURE MATHKERN(P:HALFWORD;M:SCALED);VAR N:INTEGER;F:SCALED;
BEGIN IF MEM[P].HH.B1=99 THEN BEGIN N:=XOVERN(M,65536);F:=REMAINDER;
MEM[P+1].INT:=NXPLUSY(N,MEM[P+1].INT,XNOVERD(MEM[P+1].INT,F,65536));
MEM[P].HH.B1:=0;END;END;{:717}{718:}PROCEDURE FLUSHMATH;
BEGIN FLUSHNODELIS(MEM[CURLIST.HEADFIELD].HH.RH);
FLUSHNODELIS(CURLIST.AUXFIELD);MEM[CURLIST.HEADFIELD].HH.RH:=0;
CURLIST.TAILFIELD:=CURLIST.HEADFIELD;CURLIST.AUXFIELD:=0;END;{:718}
{720:}PROCEDURE MLISTTOHLIST;FORWARD;FUNCTION CLEANBOX(P:HALFWORD;
S:SMALLNUMBER):HALFWORD;LABEL 40;VAR Q:HALFWORD;SAVESTYLE:SMALLNUMBER;
X:HALFWORD;R:HALFWORD;
BEGIN CASE MEM[P].HH.RH OF 1:BEGIN CURMLIST:=NEWNOAD;
MEM[CURMLIST+1]:=MEM[P];END;2:BEGIN Q:=MEM[P].HH.LH;GOTO 40;END;
3:CURMLIST:=MEM[P].HH.LH;OTHERS:BEGIN Q:=NEWNULLBOX;GOTO 40;END END;
SAVESTYLE:=CURSTYLE;CURSTYLE:=S;MLISTPENALTI:=FALSE;MLISTTOHLIST;
Q:=MEM[2997].HH.RH;CURSTYLE:=SAVESTYLE;{703:}
BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)DIV 2)
;CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT,18);
END{:703};
40:IF(Q>=HIMEMMIN)OR(Q=0)THEN X:=HPACK(Q,0,1)ELSE IF(MEM[Q].HH.RH=0)AND(
MEM[Q].HH.B0<=1)AND(MEM[Q+4].INT=0)THEN X:=Q ELSE X:=HPACK(Q,0,1);{721:}
Q:=MEM[X+5].HH.RH;IF(Q>=HIMEMMIN)THEN BEGIN R:=MEM[Q].HH.RH;
IF R<>0 THEN IF MEM[R].HH.RH=0 THEN IF NOT(R>=HIMEMMIN)THEN IF MEM[R].HH
.B0=11 THEN BEGIN FREENODE(R,2);MEM[Q].HH.RH:=0;END;END{:721};
CLEANBOX:=X;END;{:720}{722:}PROCEDURE FETCH(A:HALFWORD);
BEGIN CURC:=MEM[A].HH.B1;CURF:=EQTB[3679+MEM[A].HH.B0+CURSIZE].HH.RH;
IF CURF=0 THEN{723:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(210);END;PRINTSIZE(CURSIZE);PRINTCHAR(32);PRINTINT(MEM[A].HH.B0);
PRINT(750);PRINTASCII(0+CURC-0);PRINTCHAR(41);BEGIN HELPPTR:=4;
HELPLINE[3]:=751;HELPLINE[2]:=752;HELPLINE[1]:=753;HELPLINE[0]:=754;END;
ERROR;CURI:=NULLCHARACTE;MEM[A].HH.RH:=0;END{:723}
ELSE BEGIN IF(0+CURC-0>=FONTBC[CURF])AND(0+CURC-0<=FONTEC[CURF])THEN
CURI:=FONTINFO[CHARBASE[CURF]+CURC].QQQQ ELSE CURI:=NULLCHARACTE;
IF NOT((CURI.B0>0))THEN BEGIN CHARWARNING(CURF,0+CURC-0);
MEM[A].HH.RH:=0;END;END;END;{:722}{726:}{734:}
PROCEDURE MAKEOVER(Q:HALFWORD);
BEGIN MEM[Q+1].HH.LH:=OVERBAR(CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1),3*
FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT,FONTINFO[8+PARAMBASE
[EQTB[3682+CURSIZE].HH.RH]].INT);MEM[Q+1].HH.RH:=2;END;{:734}{735:}
PROCEDURE MAKEUNDER(Q:HALFWORD);VAR P,X,Y:HALFWORD;DELTA:SCALED;
BEGIN X:=CLEANBOX(Q+1,CURSTYLE);
P:=NEWKERN(3*FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT);
MEM[X].HH.RH:=P;
MEM[P].HH.RH:=FRACTIONRULE(FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH
]].INT);Y:=VPACKAGE(X,0,1,1073741823);
DELTA:=MEM[Y+3].INT+MEM[Y+2].INT+FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE]
.HH.RH]].INT;MEM[Y+3].INT:=MEM[X+3].INT;
MEM[Y+2].INT:=DELTA-MEM[Y+3].INT;MEM[Q+1].HH.LH:=Y;MEM[Q+1].HH.RH:=2;
END;{:735}{736:}PROCEDURE MAKEVCENTER(Q:HALFWORD);VAR V:HALFWORD;
DELTA:SCALED;BEGIN V:=MEM[Q+1].HH.LH;
IF MEM[V].HH.B0<>1 THEN CONFUSION(401);DELTA:=MEM[V+3].INT+MEM[V+2].INT;
MEM[V+3].INT:=FONTINFO[22+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT+HALF(
DELTA);MEM[V+2].INT:=DELTA-MEM[V+3].INT;END;{:736}{737:}
PROCEDURE MAKERADICAL(Q:HALFWORD);VAR X,Y:HALFWORD;DELTA,CLR:SCALED;
BEGIN X:=CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1);
IF CURSTYLE<2 THEN CLR:=FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].
INT+(ABS(FONTINFO[5+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT)DIV 4)ELSE
BEGIN CLR:=FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT;
CLR:=CLR+(ABS(CLR)DIV 4);END;
Y:=VARDELIMITER(Q+4,CURSIZE,MEM[X+3].INT+MEM[X+2].INT+CLR+FONTINFO[8+
PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT);
DELTA:=MEM[Y+2].INT-(MEM[X+3].INT+MEM[X+2].INT+CLR);
IF DELTA>0 THEN CLR:=CLR+HALF(DELTA);MEM[Y+4].INT:=-(MEM[X+3].INT+CLR);
MEM[Y].HH.RH:=OVERBAR(X,CLR,MEM[Y+3].INT);MEM[Q+1].HH.LH:=HPACK(Y,0,1);
MEM[Q+1].HH.RH:=2;END;{:737}{738:}PROCEDURE MAKEMATHACCE(Q:HALFWORD);
LABEL 30,31;VAR P,X,Y:HALFWORD;A:INTEGER;C:QUARTERWORD;F:INTERNALFONT;
I:FOURQUARTERS;S:SCALED;H:SCALED;DELTA:SCALED;W:SCALED;BEGIN FETCH(Q+4);
IF(CURI.B0>0)THEN BEGIN I:=CURI;C:=CURC;F:=CURF;{741:}S:=0;
IF MEM[Q+1].HH.RH=1 THEN BEGIN FETCH(Q+1);
IF((0+CURI.B2-0)MOD 4)=1 THEN BEGIN A:=LIGKERNBASE[CURF]+CURI.B3;
REPEAT CURI:=FONTINFO[A].QQQQ;
IF 0+CURI.B1-0=SKEWCHAR[CURF]THEN BEGIN IF CURI.B2>=128 THEN S:=FONTINFO
[KERNBASE[CURF]+CURI.B3].INT;GOTO 31;END;A:=A+1;UNTIL CURI.B0>=128;END;
END;31:{:741};X:=CLEANBOX(Q+1,2*(CURSTYLE DIV 2)+1);W:=MEM[X+1].INT;
H:=MEM[X+3].INT;{740:}
WHILE TRUE DO BEGIN IF((0+I.B2-0)MOD 4)<>2 THEN GOTO 30;Y:=I.B3;
I:=FONTINFO[CHARBASE[F]+Y].QQQQ;
IF FONTINFO[WIDTHBASE[F]+I.B0].INT>W THEN GOTO 30;C:=Y;END;30:{:740};
IF H<FONTINFO[5+PARAMBASE[F]].INT THEN DELTA:=H ELSE DELTA:=FONTINFO[5+
PARAMBASE[F]].INT;
IF(MEM[Q+2].HH.RH<>0)OR(MEM[Q+3].HH.RH<>0)THEN IF MEM[Q+1].HH.RH=1 THEN{
742:}BEGIN FLUSHNODELIS(X);X:=NEWNOAD;MEM[X+1]:=MEM[Q+1];
MEM[X+2]:=MEM[Q+2];MEM[X+3]:=MEM[Q+3];MEM[Q+2].HH:=EMPTYFIELD;
MEM[Q+3].HH:=EMPTYFIELD;MEM[Q+1].HH.RH:=3;MEM[Q+1].HH.LH:=X;
X:=CLEANBOX(Q+1,CURSTYLE);DELTA:=DELTA+MEM[X+3].INT-H;H:=MEM[X+3].INT;
END{:742};Y:=CHARBOX(F,C);MEM[Y+4].INT:=S+HALF(W-MEM[Y+1].INT);
MEM[Y+1].INT:=0;P:=NEWKERN(-DELTA);MEM[P].HH.RH:=X;MEM[Y].HH.RH:=P;
Y:=VPACKAGE(Y,0,1,1073741823);MEM[Y+1].INT:=MEM[X+1].INT;
IF MEM[Y+3].INT<H THEN{739:}BEGIN P:=NEWKERN(H-MEM[Y+3].INT);
MEM[P].HH.RH:=MEM[Y+5].HH.RH;MEM[Y+5].HH.RH:=P;MEM[Y+3].INT:=H;END{:739}
;MEM[Q+1].HH.LH:=Y;MEM[Q+1].HH.RH:=2;END;END;{:738}{743:}
PROCEDURE MAKEFRACTION(Q:HALFWORD);VAR P,V,X,Y,Z:HALFWORD;
DELTA,DELTA1,DELTA2,SHIFTUP,SHIFTDOWN,CLR:SCALED;
BEGIN IF MEM[Q+1].INT=1073741824 THEN MEM[Q+1].INT:=FONTINFO[8+PARAMBASE
[EQTB[3682+CURSIZE].HH.RH]].INT;{744:}
X:=CLEANBOX(Q+2,CURSTYLE+2-2*(CURSTYLE DIV 6));
Z:=CLEANBOX(Q+3,2*(CURSTYLE DIV 2)+3-2*(CURSTYLE DIV 6));
IF MEM[X+1].INT<MEM[Z+1].INT THEN X:=REBOX(X,MEM[Z+1].INT)ELSE Z:=REBOX(
Z,MEM[X+1].INT);
IF CURSTYLE<2 THEN BEGIN SHIFTUP:=FONTINFO[8+PARAMBASE[EQTB[3681+CURSIZE
].HH.RH]].INT;
SHIFTDOWN:=FONTINFO[11+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT;
END ELSE BEGIN SHIFTDOWN:=FONTINFO[12+PARAMBASE[EQTB[3681+CURSIZE].HH.RH
]].INT;
IF MEM[Q+1].INT<>0 THEN SHIFTUP:=FONTINFO[9+PARAMBASE[EQTB[3681+CURSIZE]
.HH.RH]].INT ELSE SHIFTUP:=FONTINFO[10+PARAMBASE[EQTB[3681+CURSIZE].HH.
RH]].INT;END{:744};IF MEM[Q+1].INT=0 THEN{745:}
BEGIN IF CURSTYLE<2 THEN CLR:=7*FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].
HH.RH]].INT ELSE CLR:=3*FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].
INT;DELTA:=HALF(CLR-((SHIFTUP-MEM[X+2].INT)-(MEM[Z+3].INT-SHIFTDOWN)));
IF DELTA>0 THEN BEGIN SHIFTUP:=SHIFTUP+DELTA;SHIFTDOWN:=SHIFTDOWN+DELTA;
END;END{:745}ELSE{746:}
BEGIN IF CURSTYLE<2 THEN CLR:=3*MEM[Q+1].INT ELSE CLR:=MEM[Q+1].INT;
DELTA:=HALF(MEM[Q+1].INT);
DELTA1:=CLR-((SHIFTUP-MEM[X+2].INT)-(FONTINFO[22+PARAMBASE[EQTB[3681+
CURSIZE].HH.RH]].INT+DELTA));
DELTA2:=CLR-((FONTINFO[22+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT-DELTA
)-(MEM[Z+3].INT-SHIFTDOWN));IF DELTA1>0 THEN SHIFTUP:=SHIFTUP+DELTA1;
IF DELTA2>0 THEN SHIFTDOWN:=SHIFTDOWN+DELTA2;END{:746};{747:}
V:=NEWNULLBOX;MEM[V].HH.B0:=1;MEM[V+3].INT:=SHIFTUP+MEM[X+3].INT;
MEM[V+2].INT:=MEM[Z+2].INT+SHIFTDOWN;MEM[V+1].INT:=MEM[X+1].INT;
IF MEM[Q+1].INT=0 THEN BEGIN P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(MEM[Z+3]
.INT-SHIFTDOWN));MEM[P].HH.RH:=Z;
END ELSE BEGIN Y:=FRACTIONRULE(MEM[Q+1].INT);
P:=NEWKERN((FONTINFO[22+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT-DELTA)-
(MEM[Z+3].INT-SHIFTDOWN));MEM[Y].HH.RH:=P;MEM[P].HH.RH:=Z;
P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(FONTINFO[22+PARAMBASE[EQTB[3681+
CURSIZE].HH.RH]].INT+DELTA));MEM[P].HH.RH:=Y;END;MEM[X].HH.RH:=P;
MEM[V+5].HH.RH:=X{:747};{748:}
IF CURSTYLE<2 THEN DELTA:=FONTINFO[20+PARAMBASE[EQTB[3681+CURSIZE].HH.RH
]].INT ELSE DELTA:=FONTINFO[21+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT;
X:=VARDELIMITER(Q+4,CURSIZE,DELTA);MEM[X].HH.RH:=V;
Z:=VARDELIMITER(Q+5,CURSIZE,DELTA);MEM[V].HH.RH:=Z;
MEM[Q+1].INT:=HPACK(X,0,1){:748};END;{:743}{749:}
FUNCTION MAKEOP(Q:HALFWORD):SCALED;VAR DELTA:SCALED;P,V,X,Y,Z:HALFWORD;
SHIFTUP,SHIFTDOWN:SCALED;
BEGIN IF(MEM[Q].HH.B1=0)AND(CURSTYLE<2)THEN MEM[Q].HH.B1:=1;
IF MEM[Q+1].HH.RH=1 THEN BEGIN FETCH(Q+1);
IF(CURSTYLE<2)AND(((0+CURI.B2-0)MOD 4)=2)THEN BEGIN CURC:=CURI.B3;
MEM[Q+1].HH.B1:=CURC;CURI:=FONTINFO[CHARBASE[CURF]+CURC].QQQQ;END;
DELTA:=FONTINFO[ITALICBASE[CURF]+(0+CURI.B2-0)DIV 4].INT;
X:=CLEANBOX(Q+1,CURSTYLE);
IF(MEM[Q+3].HH.RH<>0)AND(MEM[Q].HH.B1<>1)THEN MEM[X+1].INT:=MEM[X+1].INT
-DELTA;
MEM[X+4].INT:=HALF(MEM[X+3].INT-MEM[X+2].INT)-FONTINFO[22+PARAMBASE[EQTB
[3681+CURSIZE].HH.RH]].INT;MEM[Q+1].HH.RH:=2;MEM[Q+1].HH.LH:=X;
END ELSE DELTA:=0;IF MEM[Q].HH.B1=1 THEN{750:}
BEGIN X:=CLEANBOX(Q+2,2*(CURSTYLE DIV 4)+4+(CURSTYLE MOD 2));
Y:=CLEANBOX(Q+1,CURSTYLE);Z:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);
V:=NEWNULLBOX;MEM[V].HH.B0:=1;MEM[V+1].INT:=MEM[Y+1].INT;
IF MEM[X+1].INT>MEM[V+1].INT THEN MEM[V+1].INT:=MEM[X+1].INT;
IF MEM[Z+1].INT>MEM[V+1].INT THEN MEM[V+1].INT:=MEM[Z+1].INT;
X:=REBOX(X,MEM[V+1].INT);Y:=REBOX(Y,MEM[V+1].INT);
Z:=REBOX(Z,MEM[V+1].INT);MEM[X+4].INT:=HALF(DELTA);
MEM[Z+4].INT:=-MEM[X+4].INT;MEM[V+3].INT:=MEM[Y+3].INT;
MEM[V+2].INT:=MEM[Y+2].INT;{751:}
IF MEM[Q+2].HH.RH=0 THEN BEGIN FREENODE(X,7);MEM[V+5].HH.RH:=Y;
END ELSE BEGIN SHIFTUP:=FONTINFO[11+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]]
.INT-MEM[X+2].INT;
IF SHIFTUP<FONTINFO[9+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT THEN
SHIFTUP:=FONTINFO[9+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT;
P:=NEWKERN(SHIFTUP);MEM[P].HH.RH:=Y;MEM[X].HH.RH:=P;
P:=NEWKERN(FONTINFO[13+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT);
MEM[P].HH.RH:=X;MEM[V+5].HH.RH:=P;
MEM[V+3].INT:=MEM[V+3].INT+FONTINFO[13+PARAMBASE[EQTB[3682+CURSIZE].HH.
RH]].INT+MEM[X+3].INT+MEM[X+2].INT+SHIFTUP;END;
IF MEM[Q+3].HH.RH=0 THEN FREENODE(Z,7)ELSE BEGIN SHIFTDOWN:=FONTINFO[12+
PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT-MEM[Z+3].INT;
IF SHIFTDOWN<FONTINFO[10+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT THEN
SHIFTDOWN:=FONTINFO[10+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT;
P:=NEWKERN(SHIFTDOWN);MEM[Y].HH.RH:=P;MEM[P].HH.RH:=Z;
P:=NEWKERN(FONTINFO[13+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT);
MEM[Z].HH.RH:=P;
MEM[V+2].INT:=MEM[V+2].INT+FONTINFO[13+PARAMBASE[EQTB[3682+CURSIZE].HH.
RH]].INT+MEM[Z+3].INT+MEM[Z+2].INT+SHIFTDOWN;END{:751};MEM[Q+1].INT:=V;
END{:750};MAKEOP:=DELTA;END;{:749}{752:}PROCEDURE MAKEORD(Q:HALFWORD);
LABEL 20,10;VAR A:INTEGER;P:HALFWORD;
BEGIN 20:IF(MEM[Q+3].HH.RH=0)AND(MEM[Q+2].HH.RH=0)AND(MEM[Q+1].HH.RH=1)
THEN BEGIN P:=MEM[Q].HH.RH;
IF P<>0 THEN IF(MEM[P].HH.B0>=16)AND(MEM[P].HH.B0<=22)THEN IF MEM[P+1].
HH.RH=1 THEN IF MEM[P+1].HH.B0=MEM[Q+1].HH.B0 THEN BEGIN MEM[Q+1].HH.RH
:=4;FETCH(Q+1);
IF((0+CURI.B2-0)MOD 4)=1 THEN BEGIN A:=LIGKERNBASE[CURF]+CURI.B3;
CURC:=MEM[P+1].HH.B1;REPEAT CURI:=FONTINFO[A].QQQQ;{753:}
IF CURI.B1=CURC THEN IF CURI.B2>=128 THEN BEGIN P:=NEWKERN(FONTINFO[
KERNBASE[CURF]+CURI.B3].INT);MEM[P].HH.RH:=MEM[Q].HH.RH;MEM[Q].HH.RH:=P;
GOTO 10;END ELSE BEGIN MEM[Q].HH.RH:=MEM[P].HH.RH;MEM[Q+1].HH.RH:=1;
MEM[Q+1].HH.B1:=CURI.B3;MEM[Q+3]:=MEM[P+3];MEM[Q+2]:=MEM[P+2];
FREENODE(P,4);GOTO 20;END{:753};A:=A+1;UNTIL CURI.B0>=128;END;END;END;
10:END;{:752}{756:}PROCEDURE MAKESCRIPTS(Q:HALFWORD;DELTA:SCALED);
VAR P,X,Y,Z:HALFWORD;SHIFTUP,SHIFTDOWN,CLR:SCALED;T:SMALLNUMBER;
BEGIN P:=MEM[Q+1].INT;IF(P>=HIMEMMIN)THEN BEGIN SHIFTUP:=0;SHIFTDOWN:=0;
END ELSE BEGIN Z:=HPACK(P,0,1);IF CURSTYLE<4 THEN T:=16 ELSE T:=32;
SHIFTUP:=MEM[Z+3].INT-FONTINFO[18+PARAMBASE[EQTB[3681+T].HH.RH]].INT;
SHIFTDOWN:=MEM[Z+2].INT+FONTINFO[19+PARAMBASE[EQTB[3681+T].HH.RH]].INT;
FREENODE(Z,7);END;IF MEM[Q+2].HH.RH=0 THEN{757:}
BEGIN X:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);
MEM[X+1].INT:=MEM[X+1].INT+EQTB[4813].INT;
IF SHIFTDOWN<FONTINFO[16+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT THEN
SHIFTDOWN:=FONTINFO[16+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT;
CLR:=MEM[X+3].INT-(ABS(FONTINFO[5+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].
INT*4)DIV 5);IF SHIFTDOWN<CLR THEN SHIFTDOWN:=CLR;
MEM[X+4].INT:=SHIFTDOWN;END{:757}ELSE BEGIN{758:}
BEGIN X:=CLEANBOX(Q+2,2*(CURSTYLE DIV 4)+4+(CURSTYLE MOD 2));
MEM[X+1].INT:=MEM[X+1].INT+EQTB[4813].INT;
IF ODD(CURSTYLE)THEN CLR:=FONTINFO[15+PARAMBASE[EQTB[3681+CURSIZE].HH.RH
]].INT ELSE IF CURSTYLE<2 THEN CLR:=FONTINFO[13+PARAMBASE[EQTB[3681+
CURSIZE].HH.RH]].INT ELSE CLR:=FONTINFO[14+PARAMBASE[EQTB[3681+CURSIZE].
HH.RH]].INT;IF SHIFTUP<CLR THEN SHIFTUP:=CLR;
CLR:=MEM[X+2].INT+(ABS(FONTINFO[5+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].
INT)DIV 4);IF SHIFTUP<CLR THEN SHIFTUP:=CLR;END{:758};
IF MEM[Q+3].HH.RH=0 THEN MEM[X+4].INT:=-SHIFTUP ELSE{759:}
BEGIN Y:=CLEANBOX(Q+3,2*(CURSTYLE DIV 4)+5);
MEM[Y+1].INT:=MEM[Y+1].INT+EQTB[4813].INT;
IF SHIFTDOWN<FONTINFO[17+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT THEN
SHIFTDOWN:=FONTINFO[17+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT;
CLR:=4*FONTINFO[8+PARAMBASE[EQTB[3682+CURSIZE].HH.RH]].INT-((SHIFTUP-MEM
[X+2].INT)-(MEM[Y+3].INT-SHIFTDOWN));
IF CLR>0 THEN BEGIN SHIFTDOWN:=SHIFTDOWN+CLR;
CLR:=(ABS(FONTINFO[5+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT*4)DIV 5)-(
SHIFTUP-MEM[X+2].INT);IF CLR>0 THEN BEGIN SHIFTUP:=SHIFTUP+CLR;
SHIFTDOWN:=SHIFTDOWN-CLR;END;END;MEM[X+4].INT:=DELTA;
P:=NEWKERN((SHIFTUP-MEM[X+2].INT)-(MEM[Y+3].INT-SHIFTDOWN));
MEM[X].HH.RH:=P;MEM[P].HH.RH:=Y;X:=VPACKAGE(X,0,1,1073741823);
MEM[X+4].INT:=SHIFTDOWN;END{:759};END;
IF MEM[Q+1].INT=0 THEN MEM[Q+1].INT:=X ELSE BEGIN P:=MEM[Q+1].INT;
WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=X;END;END;{:756}
{762:}FUNCTION MAKELEFTRIGH(Q:HALFWORD;STYLE:SMALLNUMBER;
MAXD,MAXH:SCALED):SMALLNUMBER;VAR DELTA,DELTA1,DELTA2:SCALED;
BEGIN IF STYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((STYLE-2)DIV 2);
DELTA2:=MAXD+FONTINFO[22+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT;
DELTA1:=MAXH+MAXD-DELTA2;IF DELTA2>DELTA1 THEN DELTA1:=DELTA2;
DELTA:=(DELTA1 DIV 500)*EQTB[4385].INT;
DELTA2:=DELTA1+DELTA1-EQTB[4811].INT;IF DELTA<DELTA2 THEN DELTA:=DELTA2;
MEM[Q+1].INT:=VARDELIMITER(Q+1,CURSIZE,DELTA);
MAKELEFTRIGH:=MEM[Q].HH.B0-(10);END;{:762}PROCEDURE MLISTTOHLIST;
LABEL 21,82,80,81,83,30;VAR MLIST:HALFWORD;PENALTIES:BOOLEAN;
STYLE:SMALLNUMBER;SAVESTYLE:SMALLNUMBER;Q:HALFWORD;R:HALFWORD;
RTYPE:SMALLNUMBER;T:SMALLNUMBER;P,X,Y,Z:HALFWORD;PEN:INTEGER;
S:SMALLNUMBER;MAXH,MAXD:SCALED;DELTA:SCALED;BEGIN MLIST:=CURMLIST;
PENALTIES:=MLISTPENALTI;STYLE:=CURSTYLE;Q:=MLIST;R:=0;RTYPE:=17;MAXH:=0;
MAXD:=0;{703:}
BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)DIV 2)
;CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT,18);
END{:703};WHILE Q<>0 DO{727:}BEGIN{728:}21:DELTA:=0;
CASE MEM[Q].HH.B0 OF 18:CASE RTYPE OF 18,17,19,20,22,30:BEGIN MEM[Q].HH.
B0:=16;GOTO 21;END;OTHERS:END;19,21,22,31:BEGIN{729:}
IF RTYPE=18 THEN MEM[R].HH.B0:=16{:729};IF MEM[Q].HH.B0=31 THEN GOTO 80;
END;{733:}30:GOTO 80;25:BEGIN MAKEFRACTION(Q);GOTO 82;END;
17:BEGIN DELTA:=MAKEOP(Q);IF MEM[Q].HH.B1=1 THEN GOTO 82;END;
16:MAKEORD(Q);20,23:;24:MAKERADICAL(Q);27:MAKEOVER(Q);26:MAKEUNDER(Q);
28:MAKEMATHACCE(Q);29:MAKEVCENTER(Q);{:733}{730:}
14:BEGIN CURSTYLE:=MEM[Q].HH.B1;{703:}
BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)DIV 2)
;CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT,18);
END{:703};GOTO 81;END;15:{731:}
BEGIN CASE CURSTYLE DIV 2 OF 0:BEGIN P:=MEM[Q+1].HH.LH;
MEM[Q+1].HH.LH:=0;END;1:BEGIN P:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=0;END;
2:BEGIN P:=MEM[Q+2].HH.LH;MEM[Q+2].HH.LH:=0;END;
3:BEGIN P:=MEM[Q+2].HH.RH;MEM[Q+2].HH.RH:=0;END;END;
FLUSHNODELIS(MEM[Q+1].HH.LH);FLUSHNODELIS(MEM[Q+1].HH.RH);
FLUSHNODELIS(MEM[Q+2].HH.LH);FLUSHNODELIS(MEM[Q+2].HH.RH);
MEM[Q].HH.B0:=14;MEM[Q].HH.B1:=CURSTYLE;MEM[Q+1].INT:=0;MEM[Q+2].INT:=0;
IF P<>0 THEN BEGIN Z:=MEM[Q].HH.RH;MEM[Q].HH.RH:=P;
WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;MEM[P].HH.RH:=Z;END;GOTO 81;
END{:731};3,4,5,8,12,7:GOTO 81;
2:BEGIN IF MEM[Q+3].INT>MAXH THEN MAXH:=MEM[Q+3].INT;
IF MEM[Q+2].INT>MAXD THEN MAXD:=MEM[Q+2].INT;GOTO 81;END;10:BEGIN{732:}
IF MEM[Q].HH.B1=99 THEN BEGIN X:=MEM[Q+1].HH.LH;Y:=MATHGLUE(X,CURMU);
DELETEGLUERE(X);MEM[Q+1].HH.LH:=Y;MEM[Q].HH.B1:=0;
END ELSE IF(CURSIZE<>0)AND(MEM[Q].HH.B1=98)THEN BEGIN P:=MEM[Q].HH.RH;
IF P<>0 THEN IF(MEM[P].HH.B0=10)OR(MEM[P].HH.B0=11)THEN BEGIN MEM[Q].HH.
RH:=MEM[P].HH.RH;MEM[P].HH.RH:=0;FLUSHNODELIS(P);END;END{:732};GOTO 81;
END;11:BEGIN MATHKERN(Q,CURMU);GOTO 81;END;{:730}
OTHERS:CONFUSION(755)END;{754:}CASE MEM[Q+1].HH.RH OF 1,4:{755:}
BEGIN FETCH(Q+1);
IF(CURI.B0>0)THEN BEGIN DELTA:=FONTINFO[ITALICBASE[CURF]+(0+CURI.B2-0)
DIV 4].INT;P:=NEWCHARACTER(CURF,0+CURC-0);
IF(MEM[Q+1].HH.RH=4)AND(FONTINFO[2+PARAMBASE[CURF]].INT<>0)THEN DELTA:=0
;
IF(MEM[Q+3].HH.RH=0)AND(DELTA<>0)THEN BEGIN MEM[P].HH.RH:=NEWKERN(DELTA)
;DELTA:=0;END;END ELSE P:=0;END{:755};0:P:=0;2:P:=MEM[Q+1].HH.LH;
3:BEGIN CURMLIST:=MEM[Q+1].HH.LH;SAVESTYLE:=CURSTYLE;
MLISTPENALTI:=FALSE;MLISTTOHLIST;CURSTYLE:=SAVESTYLE;{703:}
BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)DIV 2)
;CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT,18);
END{:703};P:=HPACK(MEM[2997].HH.RH,0,1);END;OTHERS:CONFUSION(756)END;
MEM[Q+1].INT:=P;IF(MEM[Q+3].HH.RH=0)AND(MEM[Q+2].HH.RH=0)THEN GOTO 82;
MAKESCRIPTS(Q,DELTA){:754}{:728};82:Z:=HPACK(MEM[Q+1].INT,0,1);
IF MEM[Z+3].INT>MAXH THEN MAXH:=MEM[Z+3].INT;
IF MEM[Z+2].INT>MAXD THEN MAXD:=MEM[Z+2].INT;FREENODE(Z,7);80:R:=Q;
RTYPE:=MEM[R].HH.B0;81:Q:=MEM[Q].HH.RH;END{:727};{729:}
IF RTYPE=18 THEN MEM[R].HH.B0:=16{:729};{760:}P:=2997;MEM[P].HH.RH:=0;
Q:=MLIST;RTYPE:=0;CURSTYLE:=STYLE;{703:}
BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)DIV 2)
;CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT,18);
END{:703};WHILE Q<>0 DO BEGIN{761:}T:=16;S:=4;PEN:=10000;
CASE MEM[Q].HH.B0 OF 17,20,21,22,23:T:=MEM[Q].HH.B0;18:BEGIN T:=18;
PEN:=EQTB[4376].INT;END;19:BEGIN T:=19;PEN:=EQTB[4377].INT;END;
16,29,27,26:;24:S:=5;28:S:=5;25:BEGIN T:=23;S:=6;END;
30,31:T:=MAKELEFTRIGH(Q,STYLE,MAXD,MAXH);14:{763:}
BEGIN CURSTYLE:=MEM[Q].HH.B1;S:=3;{703:}
BEGIN IF CURSTYLE<4 THEN CURSIZE:=0 ELSE CURSIZE:=16*((CURSTYLE-2)DIV 2)
;CURMU:=XOVERN(FONTINFO[6+PARAMBASE[EQTB[3681+CURSIZE].HH.RH]].INT,18);
END{:703};GOTO 83;END{:763};8,12,2,7,5,3,4,10,11:BEGIN MEM[P].HH.RH:=Q;
P:=Q;Q:=MEM[Q].HH.RH;MEM[P].HH.RH:=0;GOTO 30;END;
OTHERS:CONFUSION(757)END{:761};{766:}
IF RTYPE>0 THEN BEGIN CASE STRPOOL[RTYPE*8+T+MAGICOFFSET]OF 48:X:=0;
49:IF CURSTYLE<4 THEN X:=15 ELSE X:=0;50:X:=15;
51:IF CURSTYLE<4 THEN X:=16 ELSE X:=0;
52:IF CURSTYLE<4 THEN X:=17 ELSE X:=0;OTHERS:CONFUSION(759)END;
IF X<>0 THEN BEGIN Y:=MATHGLUE(EQTB[2626+X].HH.RH,CURMU);Z:=NEWGLUE(Y);
MEM[Y].HH.RH:=0;MEM[P].HH.RH:=Z;P:=Z;MEM[Z].HH.B1:=X+1;END;END{:766};
{767:}IF MEM[Q+1].INT<>0 THEN BEGIN MEM[P].HH.RH:=MEM[Q+1].INT;
REPEAT P:=MEM[P].HH.RH;UNTIL MEM[P].HH.RH=0;END;
IF PENALTIES THEN IF MEM[Q].HH.RH<>0 THEN IF PEN<10000 THEN BEGIN RTYPE
:=MEM[MEM[Q].HH.RH].HH.B0;
IF RTYPE<>12 THEN IF RTYPE<>19 THEN BEGIN Z:=NEWPENALTY(PEN);
MEM[P].HH.RH:=Z;P:=Z;END;END{:767};RTYPE:=T;83:R:=Q;Q:=MEM[Q].HH.RH;
FREENODE(R,S);30:END{:760};END;{:726}{772:}PROCEDURE PUSHALIGNMEN;
VAR P:HALFWORD;BEGIN P:=GETNODE(5);MEM[P].HH.RH:=ALIGNPTR;
MEM[P].HH.LH:=CURALIGN;MEM[P+1].HH.LH:=MEM[2992].HH.RH;
MEM[P+1].HH.RH:=CURSPAN;MEM[P+2].INT:=CURLOOP;MEM[P+3].INT:=ALIGNSTATE;
MEM[P+4].HH.LH:=CURHEAD;MEM[P+4].HH.RH:=CURTAIL;ALIGNPTR:=P;
CURHEAD:=GETAVAIL;END;PROCEDURE POPALIGNMENT;VAR P:HALFWORD;
BEGIN BEGIN MEM[CURHEAD].HH.RH:=AVAIL;AVAIL:=CURHEAD;DYNUSED:=DYNUSED-1;
END;P:=ALIGNPTR;CURTAIL:=MEM[P+4].HH.RH;CURHEAD:=MEM[P+4].HH.LH;
ALIGNSTATE:=MEM[P+3].INT;CURLOOP:=MEM[P+2].INT;CURSPAN:=MEM[P+1].HH.RH;
MEM[2992].HH.RH:=MEM[P+1].HH.LH;CURALIGN:=MEM[P].HH.LH;
ALIGNPTR:=MEM[P].HH.RH;FREENODE(P,5);END;{:772}{774:}{782:}
PROCEDURE GETPREAMBLET;LABEL 20;BEGIN 20:GETTOKEN;
WHILE(CURCHR=128)AND(CURCMD=4)DO BEGIN GETTOKEN;
IF CURCMD>99 THEN BEGIN EXPAND;GETTOKEN;END;END;
IF(CURCMD=74)AND(CURCHR=2637)THEN BEGIN SCANOPTIONAL;SCANGLUE(2);
IF EQTB[4410].INT>0 THEN GEQDEFINE(2637,116,CURVAL)ELSE EQDEFINE(2637,
116,CURVAL);GOTO 20;END;END;{:782}PROCEDURE ALIGNPEEK;FORWARD;
PROCEDURE NORMALPARAGR;FORWARD;PROCEDURE INITALIGN;LABEL 30,31,32,22;
VAR SAVECSPTR:HALFWORD;P:HALFWORD;BEGIN SAVECSPTR:=CURCS;PUSHALIGNMEN;
ALIGNSTATE:=-1000000;{776:}
IF(CURLIST.MODEFIELD=201)AND((CURLIST.TAILFIELD<>CURLIST.HEADFIELD)OR(
CURLIST.AUXFIELD<>0))THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(544);END;PRINTESC(383);PRINT(760);
BEGIN HELPPTR:=3;HELPLINE[2]:=761;HELPLINE[1]:=762;HELPLINE[0]:=763;END;
ERROR;FLUSHMATH;END{:776};PUSHNEST;{775:}
IF CURLIST.MODEFIELD=201 THEN BEGIN CURLIST.MODEFIELD:=-1;
CURLIST.AUXFIELD:=NEST[NESTPTR-2].AUXFIELD;
END ELSE IF CURLIST.MODEFIELD>0 THEN CURLIST.MODEFIELD:=-CURLIST.
MODEFIELD{:775};SCANSPEC;NEWSAVELEVEL(6);{777:}MEM[2992].HH.RH:=0;
CURALIGN:=2992;CURLOOP:=0;SCANNERSTATU:=4;WARNINGINDEX:=SAVECSPTR;
ALIGNSTATE:=-1000000;WHILE TRUE DO BEGIN{778:}
MEM[CURALIGN].HH.RH:=NEWPARAMGLUE(11);
CURALIGN:=MEM[CURALIGN].HH.RH{:778};IF CURCMD=5 THEN GOTO 30;{779:}
{783:}P:=2996;MEM[P].HH.RH:=0;WHILE TRUE DO BEGIN GETPREAMBLET;
IF CURCMD=6 THEN GOTO 31;
IF(CURCMD<=5)AND(CURCMD>=4)AND(ALIGNSTATE=-1000000)THEN IF(P=2996)AND(
CURLOOP=0)AND(CURCMD=4)THEN CURLOOP:=CURALIGN ELSE BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(769);END;
BEGIN HELPPTR:=3;HELPLINE[2]:=770;HELPLINE[1]:=771;HELPLINE[0]:=772;END;
BACKERROR;GOTO 31;
END ELSE IF(CURCMD<>10)OR(P<>2996)THEN BEGIN MEM[P].HH.RH:=GETAVAIL;
P:=MEM[P].HH.RH;MEM[P].HH.LH:=CURTOK;END;END;31:{:783};
MEM[CURALIGN].HH.RH:=NEWNULLBOX;CURALIGN:=MEM[CURALIGN].HH.RH;
MEM[CURALIGN].HH.LH:=2991;MEM[CURALIGN+1].INT:=-1073741824;
MEM[CURALIGN+3].INT:=MEM[2996].HH.RH;{784:}P:=2996;MEM[P].HH.RH:=0;
WHILE TRUE DO BEGIN 22:GETPREAMBLET;
IF(CURCMD<=5)AND(CURCMD>=4)AND(ALIGNSTATE=-1000000)THEN GOTO 32;
IF CURCMD=6 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(773);END;BEGIN HELPPTR:=3;HELPLINE[2]:=770;
HELPLINE[1]:=771;HELPLINE[0]:=774;END;ERROR;GOTO 22;END;
MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;MEM[P].HH.LH:=CURTOK;END;
32:MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;MEM[P].HH.LH:=6459{:784};
MEM[CURALIGN+2].INT:=MEM[2996].HH.RH{:779};END;30:SCANNERSTATU:=0{:777};
NEWSAVELEVEL(6);
IF EQTB[3164].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3164].HH.RH,13);ALIGNPEEK;
END;{:774}{786:}{787:}PROCEDURE INITSPAN(P:HALFWORD);BEGIN PUSHNEST;
IF CURLIST.MODEFIELD=-101 THEN CURLIST.AUXFIELD:=1000 ELSE BEGIN CURLIST
.AUXFIELD:=-65536000;NORMALPARAGR;END;CURSPAN:=P;END;{:787}
PROCEDURE INITROW;BEGIN PUSHNEST;
CURLIST.MODEFIELD:=(-102)-CURLIST.MODEFIELD;CURLIST.AUXFIELD:=0;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[2992].HH.RH+1].HH.LH
);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=12;CURALIGN:=MEM[MEM[2992].HH.RH].HH.RH;
CURTAIL:=CURHEAD;INITSPAN(CURALIGN);END;{:786}{788:}PROCEDURE INITCOL;
BEGIN MEM[CURALIGN+5].HH.LH:=CURCMD;
IF CURCMD=63 THEN ALIGNSTATE:=0 ELSE BEGIN BACKINPUT;
BEGINTOKENLI(MEM[CURALIGN+3].INT,1);END;END;{:788}{791:}
FUNCTION FINCOL:BOOLEAN;LABEL 10;VAR P:HALFWORD;Q,R:HALFWORD;S:HALFWORD;
U:HALFWORD;W:SCALED;O:GLUEORD;N:HALFWORD;BEGIN Q:=MEM[CURALIGN].HH.RH;
IF(CURALIGN=0)OR(Q=0)THEN CONFUSION(776);P:=MEM[Q].HH.RH;{792:}
IF(P=0)AND(MEM[CURALIGN+5].HH.LH<129)THEN IF CURLOOP<>0 THEN{793:}
BEGIN MEM[Q].HH.RH:=NEWNULLBOX;P:=MEM[Q].HH.RH;MEM[P].HH.LH:=2991;
MEM[P+1].INT:=-1073741824;CURLOOP:=MEM[CURLOOP].HH.RH;{794:}Q:=2996;
R:=MEM[CURLOOP+3].INT;WHILE R<>0 DO BEGIN MEM[Q].HH.RH:=GETAVAIL;
Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=MEM[R].HH.LH;R:=MEM[R].HH.RH;END;
MEM[Q].HH.RH:=0;MEM[P+3].INT:=MEM[2996].HH.RH;Q:=2996;
R:=MEM[CURLOOP+2].INT;WHILE R<>0 DO BEGIN MEM[Q].HH.RH:=GETAVAIL;
Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=MEM[R].HH.LH;R:=MEM[R].HH.RH;END;
MEM[Q].HH.RH:=0;MEM[P+2].INT:=MEM[2996].HH.RH{:794};
CURLOOP:=MEM[CURLOOP].HH.RH;MEM[P].HH.RH:=NEWGLUE(MEM[CURLOOP+1].HH.LH);
END{:793}
ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(777);END;PRINTESC(765);BEGIN HELPPTR:=3;
HELPLINE[2]:=778;HELPLINE[1]:=779;HELPLINE[0]:=780;END;
MEM[CURALIGN+5].HH.LH:=129;ERROR;END{:792};
IF MEM[CURALIGN+5].HH.LH<>128 THEN BEGIN UNSAVE;NEWSAVELEVEL(6);{796:}
BEGIN IF CURLIST.MODEFIELD=-101 THEN BEGIN ADJUSTTAIL:=CURTAIL;
U:=HPACK(MEM[CURLIST.HEADFIELD].HH.RH,0,1);W:=MEM[U+1].INT;
CURTAIL:=ADJUSTTAIL;ADJUSTTAIL:=0;
END ELSE BEGIN U:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,0);
W:=MEM[U+3].INT;END;N:=0;IF CURSPAN<>CURALIGN THEN{798:}
BEGIN Q:=CURSPAN;REPEAT N:=N+1;Q:=MEM[MEM[Q].HH.RH].HH.RH;
UNTIL Q=CURALIGN;IF N>255 THEN CONFUSION(781);Q:=CURSPAN;
WHILE MEM[MEM[Q].HH.LH].HH.RH<N DO Q:=MEM[Q].HH.LH;
IF MEM[MEM[Q].HH.LH].HH.RH>N THEN BEGIN S:=GETNODE(2);
MEM[S].HH.LH:=MEM[Q].HH.LH;MEM[S].HH.RH:=N;MEM[Q].HH.LH:=S;
MEM[S+1].INT:=W;
END ELSE IF MEM[MEM[Q].HH.LH+1].INT<W THEN MEM[MEM[Q].HH.LH+1].INT:=W;
END{:798}ELSE IF W>MEM[CURALIGN+1].INT THEN MEM[CURALIGN+1].INT:=W;
MEM[U].HH.B0:=13;MEM[U].HH.B1:=N;{659:}
IF TOTALSTRETCH[3]<>0 THEN O:=3 ELSE IF TOTALSTRETCH[2]<>0 THEN O:=2
ELSE IF TOTALSTRETCH[1]<>0 THEN O:=1 ELSE O:=0{:659};MEM[U+5].HH.B1:=O;
MEM[U+6].INT:=TOTALSTRETCH[O];{665:}
IF TOTALSHRINK[3]<>0 THEN O:=3 ELSE IF TOTALSHRINK[2]<>0 THEN O:=2 ELSE
IF TOTALSHRINK[1]<>0 THEN O:=1 ELSE O:=0{:665};MEM[U+5].HH.B0:=O;
MEM[U+4].INT:=TOTALSHRINK[O];POPNEST;MEM[CURLIST.TAILFIELD].HH.RH:=U;
CURLIST.TAILFIELD:=U;END{:796};{795:}
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(MEM[MEM[CURALIGN].HH.RH+1].
HH.LH);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=12{:795};
IF MEM[CURALIGN+5].HH.LH>=129 THEN BEGIN FINCOL:=TRUE;GOTO 10;END;
INITSPAN(P);END;ALIGNSTATE:=1000000;{406:}REPEAT GETXTOKEN;
UNTIL CURCMD<>10{:406};CURALIGN:=P;INITCOL;FINCOL:=FALSE;10:END;{:791}
{799:}PROCEDURE FINROW;VAR P:HALFWORD;
BEGIN IF CURLIST.MODEFIELD=-101 THEN BEGIN P:=HPACK(MEM[CURLIST.
HEADFIELD].HH.RH,0,1);POPNEST;APPENDTOVLIS(P);
IF CURHEAD<>CURTAIL THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[CURHEAD
].HH.RH;CURLIST.TAILFIELD:=CURTAIL;END;
END ELSE BEGIN P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,1073741823);
POPNEST;MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
CURLIST.AUXFIELD:=1000;END;MEM[P].HH.B0:=13;MEM[P+6].INT:=0;
IF EQTB[3164].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3164].HH.RH,13);ALIGNPEEK;
END;{:799}{800:}PROCEDURE DOASSIGNMENT;FORWARD;PROCEDURE RESUMEAFTERD;
FORWARD;PROCEDURE BUILDPAGE;FORWARD;PROCEDURE FINALIGN;
VAR P,Q,R,S,U,V:HALFWORD;T,W:SCALED;O:SCALED;N:HALFWORD;RULESAVE:SCALED;
BEGIN IF CURGROUP<>6 THEN CONFUSION(782);UNSAVE;
IF CURGROUP<>6 THEN CONFUSION(783);UNSAVE;
IF NEST[NESTPTR-1].MODEFIELD=201 THEN O:=EQTB[4816].INT ELSE O:=0;{801:}
Q:=MEM[MEM[2992].HH.RH].HH.RH;REPEAT FLUSHLIST(MEM[Q+3].INT);
FLUSHLIST(MEM[Q+2].INT);P:=MEM[MEM[Q].HH.RH].HH.RH;
IF MEM[Q+1].INT=-1073741824 THEN{802:}BEGIN MEM[Q+1].INT:=0;
R:=MEM[Q].HH.RH;S:=MEM[R+1].HH.LH;
IF S<>1 THEN BEGIN MEM[1].HH.RH:=MEM[1].HH.RH+1;DELETEGLUERE(S);
MEM[R+1].HH.LH:=1;END;END{:802};IF MEM[Q].HH.LH<>2991 THEN{803:}
BEGIN T:=MEM[Q+1].INT+MEM[MEM[MEM[Q].HH.RH+1].HH.LH+1].INT;
R:=MEM[Q].HH.LH;S:=2991;MEM[S].HH.LH:=P;N:=1;
REPEAT MEM[R+1].INT:=MEM[R+1].INT-T;U:=MEM[R].HH.LH;
WHILE MEM[R].HH.RH>N DO BEGIN S:=MEM[S].HH.LH;
N:=MEM[MEM[S].HH.LH].HH.RH+1;END;
IF MEM[R].HH.RH<N THEN BEGIN MEM[R].HH.LH:=MEM[S].HH.LH;MEM[S].HH.LH:=R;
MEM[R].HH.RH:=MEM[R].HH.RH-1;S:=R;
END ELSE BEGIN IF MEM[R+1].INT>MEM[MEM[S].HH.LH+1].INT THEN MEM[MEM[S].
HH.LH+1].INT:=MEM[R+1].INT;FREENODE(R,2);END;R:=U;UNTIL R=2991;END{:803}
;MEM[Q].HH.B0:=13;MEM[Q].HH.B1:=0;MEM[Q+3].INT:=0;MEM[Q+2].INT:=0;
MEM[Q+5].HH.B1:=0;MEM[Q+5].HH.B0:=0;MEM[Q+6].INT:=0;MEM[Q+4].INT:=0;
Q:=P;UNTIL Q=0{:801};{804:}SAVEPTR:=SAVEPTR-2;
PACKBEGINLIN:=-CURLIST.MLFIELD;
IF CURLIST.MODEFIELD=-1 THEN BEGIN RULESAVE:=EQTB[4817].INT;
EQTB[4817].INT:=0;
P:=HPACK(MEM[2992].HH.RH,SAVESTACK[SAVEPTR+1].INT,SAVESTACK[SAVEPTR+0].
INT);EQTB[4817].INT:=RULESAVE;
END ELSE BEGIN Q:=MEM[MEM[2992].HH.RH].HH.RH;
REPEAT MEM[Q+3].INT:=MEM[Q+1].INT;MEM[Q+1].INT:=0;
Q:=MEM[MEM[Q].HH.RH].HH.RH;UNTIL Q=0;
P:=VPACKAGE(MEM[2992].HH.RH,SAVESTACK[SAVEPTR+1].INT,SAVESTACK[SAVEPTR+0
].INT,1073741823);Q:=MEM[MEM[2992].HH.RH].HH.RH;
REPEAT MEM[Q+1].INT:=MEM[Q+3].INT;MEM[Q+3].INT:=0;
Q:=MEM[MEM[Q].HH.RH].HH.RH;UNTIL Q=0;END;PACKBEGINLIN:=0{:804};{805:}
Q:=MEM[CURLIST.HEADFIELD].HH.RH;
WHILE Q<>0 DO BEGIN IF MEM[Q].HH.B0=13 THEN{807:}
BEGIN IF CURLIST.MODEFIELD=-1 THEN BEGIN MEM[Q].HH.B0:=0;
MEM[Q+1].INT:=MEM[P+1].INT;END ELSE BEGIN MEM[Q].HH.B0:=1;
MEM[Q+3].INT:=MEM[P+3].INT;END;MEM[Q+5].HH.B1:=MEM[P+5].HH.B1;
MEM[Q+5].HH.B0:=MEM[P+5].HH.B0;MEM[Q+6].GR:=MEM[P+6].GR;MEM[Q+4].INT:=O;
R:=MEM[MEM[Q+5].HH.RH].HH.RH;S:=MEM[MEM[P+5].HH.RH].HH.RH;REPEAT{808:}
N:=MEM[R].HH.B1;T:=MEM[S+1].INT;W:=T;U:=2996;WHILE N>0 DO BEGIN N:=N-1;
{809:}S:=MEM[S].HH.RH;V:=MEM[S+1].HH.LH;MEM[U].HH.RH:=NEWGLUE(V);
U:=MEM[U].HH.RH;MEM[U].HH.B1:=12;T:=T+MEM[V+1].INT;
IF MEM[P+5].HH.B0=1 THEN BEGIN IF MEM[V].HH.B0=MEM[P+5].HH.B1 THEN T:=T+
ROUND(MEM[P+6].GR*MEM[V+2].INT);
END ELSE IF MEM[P+5].HH.B0=2 THEN BEGIN IF MEM[V].HH.B1=MEM[P+5].HH.B1
THEN T:=T-ROUND(MEM[P+6].GR*MEM[V+3].INT);END;S:=MEM[S].HH.RH;
MEM[U].HH.RH:=NEWNULLBOX;U:=MEM[U].HH.RH;T:=T+MEM[S+1].INT;
IF CURLIST.MODEFIELD=-1 THEN MEM[U+1].INT:=MEM[S+1].INT ELSE BEGIN MEM[U
].HH.B0:=1;MEM[U+3].INT:=MEM[S+1].INT;END{:809};END;
IF CURLIST.MODEFIELD=-1 THEN{810:}BEGIN MEM[R+3].INT:=MEM[Q+3].INT;
MEM[R+2].INT:=MEM[Q+2].INT;
IF T=MEM[R+1].INT THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
MEM[R+6].GR:=0.0;
END ELSE IF T>MEM[R+1].INT THEN BEGIN MEM[R+5].HH.B0:=1;
IF MEM[R+6].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(T-MEM[R+1].
INT)/MEM[R+6].INT;END ELSE BEGIN MEM[R+5].HH.B1:=MEM[R+5].HH.B0;
MEM[R+5].HH.B0:=2;
IF MEM[R+4].INT=0 THEN MEM[R+6].GR:=0.0 ELSE IF(MEM[R+5].HH.B1=0)AND(MEM
[R+1].INT-T>MEM[R+4].INT)THEN MEM[R+6].GR:=1.0 ELSE MEM[R+6].GR:=(MEM[R
+1].INT-T)/MEM[R+4].INT;END;MEM[R+1].INT:=W;MEM[R].HH.B0:=0;END{:810}
ELSE{811:}BEGIN MEM[R+1].INT:=MEM[Q+1].INT;
IF T=MEM[R+3].INT THEN BEGIN MEM[R+5].HH.B0:=0;MEM[R+5].HH.B1:=0;
MEM[R+6].GR:=0.0;
END ELSE IF T>MEM[R+3].INT THEN BEGIN MEM[R+5].HH.B0:=1;
IF MEM[R+6].INT=0 THEN MEM[R+6].GR:=0.0 ELSE MEM[R+6].GR:=(T-MEM[R+3].
INT)/MEM[R+6].INT;END ELSE BEGIN MEM[R+5].HH.B1:=MEM[R+5].HH.B0;
MEM[R+5].HH.B0:=2;
IF MEM[R+4].INT=0 THEN MEM[R+6].GR:=0.0 ELSE IF(MEM[R+5].HH.B1=0)AND(MEM
[R+3].INT-T>MEM[R+4].INT)THEN MEM[R+6].GR:=1.0 ELSE MEM[R+6].GR:=(MEM[R
+3].INT-T)/MEM[R+4].INT;END;MEM[R+3].INT:=W;MEM[R].HH.B0:=1;END{:811};
MEM[R+4].INT:=0;IF U<>2996 THEN BEGIN MEM[U].HH.RH:=MEM[R].HH.RH;
MEM[R].HH.RH:=MEM[2996].HH.RH;R:=U;END{:808};R:=MEM[MEM[R].HH.RH].HH.RH;
S:=MEM[MEM[S].HH.RH].HH.RH;UNTIL R=0;END{:807}
ELSE IF MEM[Q].HH.B0=2 THEN{806:}
BEGIN IF(MEM[Q+1].INT=-1073741824)THEN MEM[Q+1].INT:=MEM[P+1].INT;
IF(MEM[Q+3].INT=-1073741824)THEN MEM[Q+3].INT:=MEM[P+3].INT;
IF(MEM[Q+2].INT=-1073741824)THEN MEM[Q+2].INT:=MEM[P+2].INT;END{:806};
Q:=MEM[Q].HH.RH;END{:805};FLUSHNODELIS(P);POPALIGNMENT;{812:}
T:=CURLIST.AUXFIELD;P:=MEM[CURLIST.HEADFIELD].HH.RH;
Q:=CURLIST.TAILFIELD;POPNEST;IF CURLIST.MODEFIELD=201 THEN{1206:}
BEGIN DOASSIGNMENT;IF CURCMD<>3 THEN{1207:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(1031);END;BEGIN HELPPTR:=2;HELPLINE[1]:=761;HELPLINE[0]:=762;END;
BACKERROR;END{:1207}ELSE{1197:}BEGIN GETXTOKEN;
IF CURCMD<>3 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(1027);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1028;
HELPLINE[0]:=1029;END;BACKERROR;END;END{:1197};POPNEST;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[4378].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(3);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.RH:=P;IF P<>0 THEN CURLIST.TAILFIELD:=Q;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[4379].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(4);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;CURLIST.AUXFIELD:=T;
RESUMEAFTERD;END{:1206}ELSE BEGIN CURLIST.AUXFIELD:=T;
MEM[CURLIST.TAILFIELD].HH.RH:=P;IF P<>0 THEN CURLIST.TAILFIELD:=Q;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END{:812};END;{785:}
PROCEDURE ALIGNPEEK;LABEL 20;BEGIN 20:ALIGNSTATE:=1000000;{406:}
REPEAT GETXTOKEN;UNTIL CURCMD<>10{:406};
IF CURCMD=34 THEN BEGIN SCANLEFTBRAC;NEWSAVELEVEL(7);
IF CURLIST.MODEFIELD=-1 THEN NORMALPARAGR;
END ELSE IF CURCMD=2 THEN FINALIGN ELSE IF(CURCMD=5)AND(CURCHR=130)THEN
GOTO 20 ELSE BEGIN INITROW;INITCOL;END;END;{:785}{:800}{815:}{826:}
FUNCTION FINITESHRINK(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN IF NOSHRINKERRO THEN BEGIN NOSHRINKERRO:=FALSE;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(784);END;BEGIN HELPPTR:=5;HELPLINE[4]:=785;HELPLINE[3]:=786;
HELPLINE[2]:=787;HELPLINE[1]:=788;HELPLINE[0]:=789;END;ERROR;END;
Q:=NEWSPEC(P);MEM[Q].HH.B1:=0;DELETEGLUERE(P);FINITESHRINK:=Q;END;{:826}
{829:}PROCEDURE TRYBREAK(PI:INTEGER;BREAKTYPE:SMALLNUMBER);
LABEL 10,30,31,22,60;VAR R:HALFWORD;PREVR:HALFWORD;OLDL:HALFWORD;
NOBREAKYET:BOOLEAN;{830:}PREVPREVR:HALFWORD;S:HALFWORD;Q:HALFWORD;
V:HALFWORD;T:INTEGER;F:INTERNALFONT;L:HALFWORD;NODERSTAYSAC:BOOLEAN;
LINEWIDTH:SCALED;FITCLASS:0..3;B:HALFWORD;D:INTEGER;
ARTIFICIALBA:BOOLEAN;SAVELINK:HALFWORD;SHORTFALL:SCALED;{:830}
BEGIN{831:}
IF ABS(PI)>=10000 THEN IF PI>0 THEN GOTO 10 ELSE PI:=-10000{:831};
NOBREAKYET:=TRUE;PREVR:=2993;OLDL:=0;CURACTIVEWID[1]:=ACTIVEWIDTH[1];
CURACTIVEWID[2]:=ACTIVEWIDTH[2];CURACTIVEWID[3]:=ACTIVEWIDTH[3];
CURACTIVEWID[4]:=ACTIVEWIDTH[4];CURACTIVEWID[5]:=ACTIVEWIDTH[5];
CURACTIVEWID[6]:=ACTIVEWIDTH[6];
WHILE TRUE DO BEGIN 22:R:=MEM[PREVR].HH.RH;{832:}
IF MEM[R].HH.B0=2 THEN BEGIN CURACTIVEWID[1]:=CURACTIVEWID[1]+MEM[R+1].
INT;CURACTIVEWID[2]:=CURACTIVEWID[2]+MEM[R+2].INT;
CURACTIVEWID[3]:=CURACTIVEWID[3]+MEM[R+3].INT;
CURACTIVEWID[4]:=CURACTIVEWID[4]+MEM[R+4].INT;
CURACTIVEWID[5]:=CURACTIVEWID[5]+MEM[R+5].INT;
CURACTIVEWID[6]:=CURACTIVEWID[6]+MEM[R+6].INT;PREVPREVR:=PREVR;PREVR:=R;
GOTO 22;END{:832};{835:}BEGIN L:=MEM[R+1].HH.LH;
IF L>OLDL THEN BEGIN IF(MINIMUMDEMER<1073741823)AND((OLDL<>EASYLINE)OR(R
=2993))THEN{836:}BEGIN IF NOBREAKYET THEN{837:}BEGIN NOBREAKYET:=FALSE;
BREAKWIDTH[1]:=BACKGROUND[1];BREAKWIDTH[2]:=BACKGROUND[2];
BREAKWIDTH[3]:=BACKGROUND[3];BREAKWIDTH[4]:=BACKGROUND[4];
BREAKWIDTH[5]:=BACKGROUND[5];BREAKWIDTH[6]:=BACKGROUND[6];S:=CURP;
IF BREAKTYPE>0 THEN IF CURP<>0 THEN{840:}BEGIN T:=MEM[CURP].HH.B1;
V:=CURP;S:=MEM[CURP+1].HH.RH;WHILE T>0 DO BEGIN T:=T-1;V:=MEM[V].HH.RH;
{841:}IF(V>=HIMEMMIN)THEN BEGIN F:=MEM[V].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]-FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[V].HH.B1].QQQQ.B0].INT;
END ELSE CASE MEM[V].HH.B0 OF 6:BEGIN F:=MEM[V+1].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]-FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[V+1].HH.B1].QQQQ.B0].INT;END;
0,1,2,11:BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[V+1].INT;
OTHERS:CONFUSION(790)END{:841};END;WHILE S<>0 DO BEGIN{842:}
IF(S>=HIMEMMIN)THEN BEGIN F:=MEM[S].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[S].HH.B1].QQQQ.B0].INT;
END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
BREAKWIDTH[1]:=BREAKWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+
MEM[S+1].HH.B1].QQQQ.B0].INT;END;
0,1,2:BREAKWIDTH[1]:=BREAKWIDTH[1]+MEM[S+1].INT;
11:IF(T=0)AND(MEM[S].HH.B1<>2)THEN T:=-1 ELSE BREAKWIDTH[1]:=BREAKWIDTH[
1]+MEM[S+1].INT;OTHERS:CONFUSION(791)END;T:=T+1{:842};S:=MEM[S].HH.RH;
END;BREAKWIDTH[1]:=BREAKWIDTH[1]+DISCWIDTH;IF T=0 THEN S:=MEM[V].HH.RH;
END{:840};WHILE S<>0 DO BEGIN IF(S>=HIMEMMIN)THEN GOTO 30;
CASE MEM[S].HH.B0 OF 10:{838:}BEGIN V:=MEM[S+1].HH.LH;
BREAKWIDTH[1]:=BREAKWIDTH[1]-MEM[V+1].INT;
BREAKWIDTH[2+MEM[V].HH.B0]:=BREAKWIDTH[2+MEM[V].HH.B0]-MEM[V+2].INT;
BREAKWIDTH[6]:=BREAKWIDTH[6]-MEM[V+3].INT;END{:838};12:;
9,11:IF MEM[S].HH.B1=2 THEN GOTO 30 ELSE BREAKWIDTH[1]:=BREAKWIDTH[1]-
MEM[S+1].INT;OTHERS:GOTO 30 END;S:=MEM[S].HH.RH;END;30:END{:837};{843:}
IF MEM[PREVR].HH.B0=2 THEN BEGIN MEM[PREVR+1].INT:=MEM[PREVR+1].INT-
CURACTIVEWID[1]+BREAKWIDTH[1];
MEM[PREVR+2].INT:=MEM[PREVR+2].INT-CURACTIVEWID[2]+BREAKWIDTH[2];
MEM[PREVR+3].INT:=MEM[PREVR+3].INT-CURACTIVEWID[3]+BREAKWIDTH[3];
MEM[PREVR+4].INT:=MEM[PREVR+4].INT-CURACTIVEWID[4]+BREAKWIDTH[4];
MEM[PREVR+5].INT:=MEM[PREVR+5].INT-CURACTIVEWID[5]+BREAKWIDTH[5];
MEM[PREVR+6].INT:=MEM[PREVR+6].INT-CURACTIVEWID[6]+BREAKWIDTH[6];
END ELSE IF PREVR=2993 THEN BEGIN ACTIVEWIDTH[1]:=BREAKWIDTH[1];
ACTIVEWIDTH[2]:=BREAKWIDTH[2];ACTIVEWIDTH[3]:=BREAKWIDTH[3];
ACTIVEWIDTH[4]:=BREAKWIDTH[4];ACTIVEWIDTH[5]:=BREAKWIDTH[5];
ACTIVEWIDTH[6]:=BREAKWIDTH[6];END ELSE BEGIN Q:=GETNODE(7);
MEM[Q].HH.RH:=R;MEM[Q].HH.B0:=2;MEM[Q].HH.B1:=0;
MEM[Q+1].INT:=BREAKWIDTH[1]-CURACTIVEWID[1];
MEM[Q+2].INT:=BREAKWIDTH[2]-CURACTIVEWID[2];
MEM[Q+3].INT:=BREAKWIDTH[3]-CURACTIVEWID[3];
MEM[Q+4].INT:=BREAKWIDTH[4]-CURACTIVEWID[4];
MEM[Q+5].INT:=BREAKWIDTH[5]-CURACTIVEWID[5];
MEM[Q+6].INT:=BREAKWIDTH[6]-CURACTIVEWID[6];MEM[PREVR].HH.RH:=Q;
PREVPREVR:=PREVR;PREVR:=Q;END{:843};
MINIMUMDEMER:=MINIMUMDEMER+ABS(EQTB[4383].INT);
FOR FITCLASS:=0 TO 3 DO BEGIN IF MINIMALDEMER[FITCLASS]<=MINIMUMDEMER
THEN{845:}BEGIN Q:=GETNODE(2);MEM[Q].HH.RH:=PASSIVE;PASSIVE:=Q;
MEM[Q+1].HH.RH:=CURP;PASSNUMBER:=PASSNUMBER+1;MEM[Q].HH.LH:=PASSNUMBER;
MEM[Q+1].HH.LH:=BESTPLACE[FITCLASS];Q:=GETNODE(3);
MEM[Q+1].HH.RH:=PASSIVE;MEM[Q+1].HH.LH:=BESTPLLINE[FITCLASS]+1;
MEM[Q].HH.B1:=FITCLASS;MEM[Q].HH.B0:=BREAKTYPE;
MEM[Q+2].INT:=MINIMALDEMER[FITCLASS];MEM[Q].HH.RH:=R;
MEM[PREVR].HH.RH:=Q;PREVR:=Q;IF EQTB[4399].INT>0 THEN{846:}
BEGIN PRINTNL(792);PRINTINT(MEM[PASSIVE].HH.LH);PRINT(793);
PRINTINT(MEM[Q+1].HH.LH-1);PRINTCHAR(46);PRINTINT(FITCLASS);
IF BREAKTYPE=1 THEN PRINTCHAR(45);PRINT(794);PRINTINT(MEM[Q+2].INT);
PRINT(795);
IF MEM[PASSIVE+1].HH.LH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[MEM[
PASSIVE+1].HH.LH].HH.LH);END{:846};END{:845};
MINIMALDEMER[FITCLASS]:=1073741823;END;MINIMUMDEMER:=1073741823;{844:}
IF R<>2993 THEN BEGIN Q:=GETNODE(7);MEM[Q].HH.RH:=R;MEM[Q].HH.B0:=2;
MEM[Q].HH.B1:=0;MEM[Q+1].INT:=CURACTIVEWID[1]-BREAKWIDTH[1];
MEM[Q+2].INT:=CURACTIVEWID[2]-BREAKWIDTH[2];
MEM[Q+3].INT:=CURACTIVEWID[3]-BREAKWIDTH[3];
MEM[Q+4].INT:=CURACTIVEWID[4]-BREAKWIDTH[4];
MEM[Q+5].INT:=CURACTIVEWID[5]-BREAKWIDTH[5];
MEM[Q+6].INT:=CURACTIVEWID[6]-BREAKWIDTH[6];MEM[PREVR].HH.RH:=Q;
PREVPREVR:=PREVR;PREVR:=Q;END{:844};END{:836};IF R=2993 THEN GOTO 10;
{850:}IF L>EASYLINE THEN BEGIN LINEWIDTH:=SECONDWIDTH;OLDL:=32767;
END ELSE BEGIN OLDL:=L;
IF L>LASTSPECIALL THEN LINEWIDTH:=SECONDWIDTH ELSE IF EQTB[3156].HH.RH=0
THEN LINEWIDTH:=FIRSTWIDTH ELSE LINEWIDTH:=MEM[EQTB[3156].HH.RH+2*L].INT
;END{:850};END;END{:835};{851:}BEGIN ARTIFICIALBA:=FALSE;
SHORTFALL:=LINEWIDTH-CURACTIVEWID[1];IF SHORTFALL>0 THEN{852:}
IF(CURACTIVEWID[3]<>0)OR(CURACTIVEWID[4]<>0)OR(CURACTIVEWID[5]<>0)THEN
BEGIN B:=0;FITCLASS:=2;
END ELSE BEGIN IF SHORTFALL>7230584 THEN IF CURACTIVEWID[2]<1663497 THEN
BEGIN B:=10000;FITCLASS:=0;GOTO 31;END;
B:=BADNESS(SHORTFALL,CURACTIVEWID[2]);
IF B>12 THEN IF B>99 THEN FITCLASS:=0 ELSE FITCLASS:=1 ELSE FITCLASS:=2;
31:END{:852}ELSE{853:}
BEGIN IF-SHORTFALL>CURACTIVEWID[6]THEN B:=10001 ELSE B:=BADNESS(-
SHORTFALL,CURACTIVEWID[6]);IF B>12 THEN FITCLASS:=3 ELSE FITCLASS:=2;
END{:853};IF(B>10000)OR(PI=-10000)THEN{854:}
BEGIN IF SECONDPASS AND(MINIMUMDEMER=1073741823)AND(MEM[R].HH.RH=2993)
AND(PREVR=2993)THEN BEGIN B:=0;ARTIFICIALBA:=TRUE;
END ELSE IF B>THRESHOLD THEN GOTO 60;NODERSTAYSAC:=FALSE;END{:854}
ELSE BEGIN PREVR:=R;IF B>THRESHOLD THEN GOTO 22;NODERSTAYSAC:=TRUE;END;
{855:}{859:}D:=EQTB[4369].INT+B;D:=D*D;
IF PI<>0 THEN IF PI>0 THEN D:=D+PI*PI ELSE IF PI>-10000 THEN D:=D-PI*PI;
IF(BREAKTYPE=1)AND(MEM[R].HH.B0=1)THEN IF CURP<>0 THEN D:=D+EQTB[4381].
INT ELSE D:=D+EQTB[4382].INT;
IF ABS(FITCLASS-MEM[R].HH.B1)>1 THEN D:=D+EQTB[4383].INT{:859};
IF EQTB[4399].INT>0 THEN{856:}BEGIN IF PRINTEDNODE<>CURP THEN{857:}
BEGIN PRINTNL(210);
IF CURP=0 THEN SHORTDISPLAY(MEM[PRINTEDNODE].HH.RH)ELSE BEGIN SAVELINK:=
MEM[CURP].HH.RH;MEM[CURP].HH.RH:=0;PRINTNL(210);
SHORTDISPLAY(MEM[PRINTEDNODE].HH.RH);MEM[CURP].HH.RH:=SAVELINK;END;
PRINTEDNODE:=CURP;END{:857};PRINTNL(64);
IF CURP=0 THEN PRINTESC(460)ELSE IF MEM[CURP].HH.B0<>10 THEN BEGIN IF
MEM[CURP].HH.B0=12 THEN PRINTESC(393)ELSE IF MEM[CURP].HH.B0=7 THEN
PRINTESC(221)ELSE IF MEM[CURP].HH.B0=11 THEN PRINTESC(212)ELSE PRINTESC(
215);END;PRINT(796);
IF MEM[R+1].HH.RH=0 THEN PRINTCHAR(48)ELSE PRINTINT(MEM[MEM[R+1].HH.RH].
HH.LH);PRINT(797);IF ARTIFICIALBA THEN PRINTCHAR(42)ELSE PRINTINT(B);
PRINT(798);PRINTINT(PI);PRINT(799);PRINTINT(D);END{:856};
D:=D+MEM[R+2].INT;
IF D<=MINIMALDEMER[FITCLASS]THEN BEGIN MINIMALDEMER[FITCLASS]:=D;
BESTPLACE[FITCLASS]:=MEM[R+1].HH.RH;BESTPLLINE[FITCLASS]:=L;
IF D<MINIMUMDEMER THEN MINIMUMDEMER:=D;END{:855};
IF NODERSTAYSAC THEN GOTO 22;60:{860:}MEM[PREVR].HH.RH:=MEM[R].HH.RH;
FREENODE(R,3);IF PREVR=2993 THEN{861:}BEGIN R:=MEM[2993].HH.RH;
IF MEM[R].HH.B0=2 THEN BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[R+1].INT
;ACTIVEWIDTH[2]:=ACTIVEWIDTH[2]+MEM[R+2].INT;
ACTIVEWIDTH[3]:=ACTIVEWIDTH[3]+MEM[R+3].INT;
ACTIVEWIDTH[4]:=ACTIVEWIDTH[4]+MEM[R+4].INT;
ACTIVEWIDTH[5]:=ACTIVEWIDTH[5]+MEM[R+5].INT;
ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[R+6].INT;
CURACTIVEWID[1]:=ACTIVEWIDTH[1];CURACTIVEWID[2]:=ACTIVEWIDTH[2];
CURACTIVEWID[3]:=ACTIVEWIDTH[3];CURACTIVEWID[4]:=ACTIVEWIDTH[4];
CURACTIVEWID[5]:=ACTIVEWIDTH[5];CURACTIVEWID[6]:=ACTIVEWIDTH[6];
MEM[2993].HH.RH:=MEM[R].HH.RH;FREENODE(R,7);END;END{:861}
ELSE IF MEM[PREVR].HH.B0=2 THEN BEGIN R:=MEM[PREVR].HH.RH;
IF R=2993 THEN BEGIN CURACTIVEWID[1]:=CURACTIVEWID[1]-MEM[PREVR+1].INT;
CURACTIVEWID[2]:=CURACTIVEWID[2]-MEM[PREVR+2].INT;
CURACTIVEWID[3]:=CURACTIVEWID[3]-MEM[PREVR+3].INT;
CURACTIVEWID[4]:=CURACTIVEWID[4]-MEM[PREVR+4].INT;
CURACTIVEWID[5]:=CURACTIVEWID[5]-MEM[PREVR+5].INT;
CURACTIVEWID[6]:=CURACTIVEWID[6]-MEM[PREVR+6].INT;
MEM[PREVPREVR].HH.RH:=2993;FREENODE(PREVR,7);PREVR:=PREVPREVR;
END ELSE IF MEM[R].HH.B0=2 THEN BEGIN CURACTIVEWID[1]:=CURACTIVEWID[1]+
MEM[R+1].INT;CURACTIVEWID[2]:=CURACTIVEWID[2]+MEM[R+2].INT;
CURACTIVEWID[3]:=CURACTIVEWID[3]+MEM[R+3].INT;
CURACTIVEWID[4]:=CURACTIVEWID[4]+MEM[R+4].INT;
CURACTIVEWID[5]:=CURACTIVEWID[5]+MEM[R+5].INT;
CURACTIVEWID[6]:=CURACTIVEWID[6]+MEM[R+6].INT;
MEM[PREVR+1].INT:=MEM[PREVR+1].INT+MEM[R+1].INT;
MEM[PREVR+2].INT:=MEM[PREVR+2].INT+MEM[R+2].INT;
MEM[PREVR+3].INT:=MEM[PREVR+3].INT+MEM[R+3].INT;
MEM[PREVR+4].INT:=MEM[PREVR+4].INT+MEM[R+4].INT;
MEM[PREVR+5].INT:=MEM[PREVR+5].INT+MEM[R+5].INT;
MEM[PREVR+6].INT:=MEM[PREVR+6].INT+MEM[R+6].INT;
MEM[PREVR].HH.RH:=MEM[R].HH.RH;FREENODE(R,7);END;END{:860};END{:851};
END;10:{858:}
IF CURP=PRINTEDNODE THEN IF CURP<>0 THEN IF MEM[CURP].HH.B0=7 THEN BEGIN
T:=MEM[CURP].HH.B1;WHILE T>0 DO BEGIN T:=T-1;
PRINTEDNODE:=MEM[PRINTEDNODE].HH.RH;END;END{:858}END;{:829}{877:}
PROCEDURE POSTLINEBREA(FINALWIDOWPE:INTEGER);LABEL 30,31;
VAR Q,R,S:HALFWORD;DISCBREAK:BOOLEAN;CURWIDTH:SCALED;CURINDENT:SCALED;
T:QUARTERWORD;PEN:INTEGER;CURLINE:HALFWORD;BEGIN{878:}
Q:=MEM[BESTBET+1].HH.RH;CURP:=0;REPEAT R:=Q;Q:=MEM[Q+1].HH.LH;
MEM[R+1].HH.LH:=CURP;CURP:=R;UNTIL Q=0{:878};CURLINE:=CURLIST.PGFIELD+1;
REPEAT{880:}{881:}Q:=MEM[CURP+1].HH.RH;DISCBREAK:=FALSE;
IF Q<>0 THEN IF MEM[Q].HH.B0=10 THEN BEGIN DELETEGLUERE(MEM[Q+1].HH.LH);
MEM[Q+1].HH.LH:=EQTB[2634].HH.RH;MEM[Q].HH.B1:=9;
MEM[EQTB[2634].HH.RH].HH.RH:=MEM[EQTB[2634].HH.RH].HH.RH+1;GOTO 30;
END ELSE BEGIN IF MEM[Q].HH.B0=7 THEN{882:}BEGIN T:=MEM[Q].HH.B1;{883:}
IF T=0 THEN R:=MEM[Q].HH.RH ELSE BEGIN R:=Q;
WHILE T>1 DO BEGIN R:=MEM[R].HH.RH;T:=T-1;END;S:=MEM[R].HH.RH;
IF NOT(S>=HIMEMMIN)THEN IF MEM[CURP+1].HH.LH<>0 THEN IF MEM[MEM[CURP+1].
HH.LH+1].HH.RH=S THEN S:=R;R:=MEM[S].HH.RH;MEM[S].HH.RH:=0;
FLUSHNODELIS(MEM[Q].HH.RH);MEM[Q].HH.B1:=0;END{:883};
IF MEM[Q+1].HH.RH<>0 THEN{884:}BEGIN S:=MEM[Q+1].HH.RH;
WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[S].HH.RH:=R;
R:=MEM[Q+1].HH.RH;MEM[Q+1].HH.RH:=0;END{:884};
IF MEM[Q+1].HH.LH<>0 THEN{885:}BEGIN S:=MEM[Q+1].HH.LH;MEM[Q].HH.RH:=S;
WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[Q+1].HH.LH:=0;Q:=S;
END{:885};MEM[Q].HH.RH:=R;DISCBREAK:=TRUE;END{:882}
ELSE IF(MEM[Q].HH.B0=9)OR(MEM[Q].HH.B0=11)THEN MEM[Q+1].INT:=0;
END ELSE BEGIN Q:=2997;WHILE MEM[Q].HH.RH<>0 DO Q:=MEM[Q].HH.RH;END;
{886:}R:=NEWPARAMGLUE(8);MEM[R].HH.RH:=MEM[Q].HH.RH;MEM[Q].HH.RH:=R;
Q:=R{:886};30:{:881};{887:}R:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;
Q:=MEM[2997].HH.RH;MEM[2997].HH.RH:=R;
IF EQTB[2633].HH.RH<>1 THEN BEGIN R:=NEWPARAMGLUE(7);MEM[R].HH.RH:=Q;
Q:=R;END{:887};{889:}
IF CURLINE>LASTSPECIALL THEN BEGIN CURWIDTH:=SECONDWIDTH;
CURINDENT:=SECONDINDENT;
END ELSE IF EQTB[3156].HH.RH=0 THEN BEGIN CURWIDTH:=FIRSTWIDTH;
CURINDENT:=FIRSTINDENT;
END ELSE BEGIN CURWIDTH:=MEM[EQTB[3156].HH.RH+2*CURLINE].INT;
CURINDENT:=MEM[EQTB[3156].HH.RH+2*CURLINE-1].INT;END;ADJUSTTAIL:=2995;
JUSTBOX:=HPACK(Q,CURWIDTH,0);MEM[JUSTBOX+4].INT:=CURINDENT{:889};{888:}
APPENDTOVLIS(JUSTBOX);
IF 2995<>ADJUSTTAIL THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[2995].
HH.RH;CURLIST.TAILFIELD:=ADJUSTTAIL;END;ADJUSTTAIL:=0{:888};{890:}
IF CURLINE+1<>BESTLINE THEN BEGIN PEN:=EQTB[4380].INT;
IF CURLINE=CURLIST.PGFIELD+1 THEN PEN:=PEN+EQTB[4372].INT;
IF CURLINE+2=BESTLINE THEN PEN:=PEN+FINALWIDOWPE;
IF DISCBREAK THEN PEN:=PEN+EQTB[4375].INT;
IF PEN<>0 THEN BEGIN R:=NEWPENALTY(PEN);MEM[CURLIST.TAILFIELD].HH.RH:=R;
CURLIST.TAILFIELD:=R;END;END{:890}{:880};CURLINE:=CURLINE+1;
CURP:=MEM[CURP+1].HH.LH;IF CURP<>0 THEN{879:}BEGIN R:=2997;
WHILE TRUE DO BEGIN Q:=MEM[R].HH.RH;IF Q=MEM[CURP+1].HH.RH THEN GOTO 31;
IF(Q>=HIMEMMIN)THEN GOTO 31;IF(MEM[Q].HH.B0<9)THEN GOTO 31;
IF MEM[Q].HH.B1=2 THEN IF MEM[Q].HH.B0=11 THEN GOTO 31;R:=Q;END;
31:IF R<>2997 THEN BEGIN MEM[R].HH.RH:=0;FLUSHNODELIS(MEM[2997].HH.RH);
MEM[2997].HH.RH:=Q;END;END{:879};UNTIL CURP=0;
IF(CURLINE<>BESTLINE)OR(MEM[2997].HH.RH<>0)THEN CONFUSION(804);
CURLIST.PGFIELD:=BESTLINE-1;END;{:877}{895:}{906:}
FUNCTION RECONSTITUTE(J,N:SMALLNUMBER):SMALLNUMBER;LABEL 22,30;
VAR P:HALFWORD;S:HALFWORD;Q:FOURQUARTERS;C:QUARTERWORD;D:QUARTERWORD;
W:SCALED;R:0..FONTMEMSIZE;BEGIN{907:}HYPHENPASSED:=0;S:=2996;W:=0;
D:=0+HU[J]+0;C:=D;WHILE TRUE DO BEGIN 22:P:=GETAVAIL;MEM[P].HH.B0:=HF;
MEM[P].HH.B1:=C;MEM[S].HH.RH:=P;{908:}IF J=N THEN GOTO 30;
Q:=FONTINFO[CHARBASE[HF]+D].QQQQ;IF((0+Q.B2-0)MOD 4)<>1 THEN GOTO 30;
R:=LIGKERNBASE[HF]+Q.B3;C:=0+HU[J+1]+0;
WHILE TRUE DO BEGIN Q:=FONTINFO[R].QQQQ;
IF Q.B1=C THEN BEGIN IF ODD(HYF[J])AND(HYPHENPASSED=0)THEN HYPHENPASSED
:=J;IF Q.B2<128 THEN{909:}BEGIN D:=Q.B3;J:=J+1;S:=P;GOTO 22;END{:909}
ELSE BEGIN W:=FONTINFO[KERNBASE[HF]+Q.B3].INT;GOTO 30;END;
END ELSE IF Q.B0<128 THEN R:=R+1 ELSE GOTO 30;END{:908};END;30:{:907};
{910:}IF S<>2996 THEN BEGIN P:=NEWLIGATURE(HF,D,MEM[2996].HH.RH);
MEM[2996].HH.RH:=P;END{:910};{911:}
IF W<>0 THEN MEM[MEM[2996].HH.RH].HH.RH:=NEWKERN(W){:911};
RECONSTITUTE:=J;END;{:906}PROCEDURE HYPHENATE;LABEL 30,40,45,41,10;
VAR{901:}I,J,L:0..65;Q,R,S:HALFWORD;{:901}{912:}
MAJORTAIL,MINORTAIL:HALFWORD;C:ASCIICODE;HYFNODE:HALFWORD;{:912}{922:}
Z:TRIEPOINTER;V:QUARTERWORD;{:922}{929:}H:HYPHPOINTER;K:STRNUMBER;
U:POOLPOINTER;{:929}BEGIN{923:}FOR J:=0 TO HN DO HYF[J]:=0;{930:}
H:=HC[1];FOR J:=2 TO HN DO H:=(H+H+HC[J])MOD 307;
WHILE TRUE DO BEGIN{931:}K:=HYPHWORD[H];IF K=0 THEN GOTO 45;
IF(STRSTART[K+1]-STRSTART[K])<HN THEN GOTO 45;
IF(STRSTART[K+1]-STRSTART[K])=HN THEN BEGIN J:=1;U:=STRSTART[K];
REPEAT IF STRPOOL[U]<HC[J]THEN GOTO 45;IF STRPOOL[U]>HC[J]THEN GOTO 30;
J:=J+1;U:=U+1;UNTIL J>HN;{932:}S:=HYPHLIST[H];
WHILE S<>0 DO BEGIN HYF[MEM[S].HH.LH]:=1;S:=MEM[S].HH.RH;END{:932};
GOTO 40;END;30:{:931};IF H>0 THEN H:=H-1 ELSE H:=307;END;45:{:930};
HC[0]:=127;HC[HN+1]:=127;HC[HN+2]:=256;
FOR J:=0 TO HN-2 DO BEGIN Z:=HC[J];L:=J;
WHILE HC[L]=TRIE[Z].B1 DO BEGIN IF TRIE[Z].B0<>0 THEN{924:}
BEGIN V:=TRIE[Z].B0;REPEAT I:=L-HYFDISTANCE[V];
IF HYFNUM[V]>HYF[I]THEN HYF[I]:=HYFNUM[V];V:=HYFNEXT[V];UNTIL V=0;
END{:924};L:=L+1;Z:=TRIE[Z].RH+HC[L];END;END;40:HYF[1]:=0;HYF[HN-2]:=0;
HYF[HN-1]:=0;HYF[HN]:=0{:923};{902:}
FOR J:=2 TO HN-3 DO IF ODD(HYF[J])THEN GOTO 41;GOTO 10;41:{:902};{903:}
Q:=MEM[HB].HH.RH;MEM[HB].HH.RH:=0;S:=CURP;
WHILE MEM[S].HH.RH<>HA DO S:=MEM[S].HH.RH;MEM[S].HH.RH:=0;
FLUSHNODELIS(HA);{913:}J:=0;REPEAT L:=J;J:=RECONSTITUTE(J+1,HN);
IF HYPHENPASSED<>0 THEN{914:}BEGIN R:=GETNODE(2);MEM[S].HH.RH:=R;
MEM[R].HH.RH:=MEM[2996].HH.RH;MEM[R].HH.B0:=7;
MAJORTAIL:=MEM[2996].HH.RH;
IF MEM[MAJORTAIL].HH.RH<>0 THEN MAJORTAIL:=MEM[MAJORTAIL].HH.RH;
I:=HYPHENPASSED;{915:}MINORTAIL:=0;HYFNODE:=NEWCHARACTER(HF,HYFCHAR);
IF HYFNODE<>0 THEN BEGIN I:=I+1;C:=HU[I];HU[I]:=HYFCHAR;END;
REPEAT L:=RECONSTITUTE(L+1,I);
IF MINORTAIL=0 THEN MEM[R+1].HH.LH:=MEM[2996].HH.RH ELSE MEM[MINORTAIL].
HH.RH:=MEM[2996].HH.RH;MINORTAIL:=MEM[2996].HH.RH;
IF MEM[MINORTAIL].HH.RH<>0 THEN MINORTAIL:=MEM[MINORTAIL].HH.RH;
UNTIL L=I;IF HYFNODE<>0 THEN BEGIN HU[I]:=C;
BEGIN MEM[HYFNODE].HH.RH:=AVAIL;AVAIL:=HYFNODE;DYNUSED:=DYNUSED-1;END;
I:=I-1;L:=I;END;HYF[I]:=0{:915};{916:}MINORTAIL:=0;MEM[R+1].HH.RH:=0;
WHILE L<J DO BEGIN REPEAT L:=RECONSTITUTE(L+1,HN);
IF MINORTAIL=0 THEN MEM[R+1].HH.RH:=MEM[2996].HH.RH ELSE MEM[MINORTAIL].
HH.RH:=MEM[2996].HH.RH;MINORTAIL:=MEM[2996].HH.RH;
IF MEM[MINORTAIL].HH.RH<>0 THEN BEGIN HYF[L]:=0;
MINORTAIL:=MEM[MINORTAIL].HH.RH;END;UNTIL L>=J;
WHILE L>J DO BEGIN J:=RECONSTITUTE(J+1,HN);
MEM[MAJORTAIL].HH.RH:=MEM[2996].HH.RH;MAJORTAIL:=MEM[2996].HH.RH;
IF MEM[MAJORTAIL].HH.RH<>0 THEN BEGIN HYF[J]:=0;
MAJORTAIL:=MEM[MAJORTAIL].HH.RH;END;END;END{:916};{917:}I:=0;S:=R;
WHILE MEM[S].HH.RH<>0 DO BEGIN I:=I+1;S:=MEM[S].HH.RH;END;
MEM[R].HH.B1:=I{:917};END{:914}ELSE BEGIN MEM[S].HH.RH:=MEM[2996].HH.RH;
S:=MEM[S].HH.RH;IF MEM[S].HH.RH<>0 THEN S:=MEM[S].HH.RH;END;
IF ODD(HYF[J])THEN{918:}BEGIN R:=NEWDISC;
MEM[R+1].HH.LH:=NEWCHARACTER(HF,HYFCHAR);MEM[S].HH.RH:=R;S:=R;END{:918};
UNTIL J=HN;MEM[S].HH.RH:=Q{:913}{:903};10:END;{:895}
PROCEDURE LINEBREAK(FINALWIDOWPE:INTEGER);LABEL 30,31,32,33,34;VAR{862:}
AUTOBREAKING:BOOLEAN;PREVP:HALFWORD;Q,R,S:HALFWORD;F:INTERNALFONT;{:862}
{893:}J:SMALLNUMBER;C:0..255;{:893}BEGIN PACKBEGINLIN:=CURLIST.MLFIELD;
{816:}MEM[2997].HH.RH:=MEM[CURLIST.HEADFIELD].HH.RH;
IF(CURLIST.TAILFIELD>=HIMEMMIN)THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=
NEWPENALTY(10000);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END ELSE IF MEM[CURLIST.TAILFIELD].HH.B0<>10 THEN BEGIN MEM[CURLIST.
TAILFIELD].HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.B0:=12;
DELETEGLUERE(MEM[CURLIST.TAILFIELD+1].HH.LH);
FLUSHNODELIS(MEM[CURLIST.TAILFIELD+1].HH.RH);
MEM[CURLIST.TAILFIELD+1].INT:=10000;END;
MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(14);POPNEST;{:816}{827:}
NOSHRINKERRO:=TRUE;
IF(MEM[EQTB[2633].HH.RH].HH.B1<>0)AND(MEM[EQTB[2633].HH.RH+3].INT<>0)
THEN BEGIN EQTB[2633].HH.RH:=FINITESHRINK(EQTB[2633].HH.RH);END;
IF(MEM[EQTB[2634].HH.RH].HH.B1<>0)AND(MEM[EQTB[2634].HH.RH+3].INT<>0)
THEN BEGIN EQTB[2634].HH.RH:=FINITESHRINK(EQTB[2634].HH.RH);END;
Q:=EQTB[2633].HH.RH;R:=EQTB[2634].HH.RH;
BACKGROUND[1]:=MEM[Q+1].INT+MEM[R+1].INT;BACKGROUND[2]:=0;
BACKGROUND[3]:=0;BACKGROUND[4]:=0;BACKGROUND[5]:=0;
BACKGROUND[2+MEM[Q].HH.B0]:=MEM[Q+2].INT;
BACKGROUND[2+MEM[R].HH.B0]:=BACKGROUND[2+MEM[R].HH.B0]+MEM[R+2].INT;
BACKGROUND[6]:=MEM[Q+3].INT+MEM[R+3].INT;{:827}{834:}
MINIMUMDEMER:=1073741823;MINIMALDEMER[3]:=1073741823;
MINIMALDEMER[2]:=1073741823;MINIMALDEMER[1]:=1073741823;
MINIMALDEMER[0]:=1073741823;{:834}{848:}
IF EQTB[3156].HH.RH=0 THEN IF EQTB[4818].INT=0 THEN BEGIN LASTSPECIALL:=
0;SECONDWIDTH:=EQTB[4804].INT;SECONDINDENT:=0;END ELSE{849:}
BEGIN LASTSPECIALL:=ABS(EQTB[4408].INT);
IF EQTB[4408].INT<0 THEN BEGIN FIRSTWIDTH:=EQTB[4804].INT-ABS(EQTB[4818]
.INT);
IF EQTB[4818].INT>=0 THEN FIRSTINDENT:=EQTB[4818].INT ELSE FIRSTINDENT:=
0;SECONDWIDTH:=EQTB[4804].INT;SECONDINDENT:=0;
END ELSE BEGIN FIRSTWIDTH:=EQTB[4804].INT;FIRSTINDENT:=0;
SECONDWIDTH:=EQTB[4804].INT-ABS(EQTB[4818].INT);
IF EQTB[4818].INT>=0 THEN SECONDINDENT:=EQTB[4818].INT ELSE SECONDINDENT
:=0;END;END{:849}ELSE BEGIN LASTSPECIALL:=MEM[EQTB[3156].HH.RH].HH.LH-1;
SECONDWIDTH:=MEM[EQTB[3156].HH.RH+2*(LASTSPECIALL+1)].INT;
SECONDINDENT:=MEM[EQTB[3156].HH.RH+2*LASTSPECIALL+1].INT;END;
IF EQTB[4386].INT=0 THEN EASYLINE:=LASTSPECIALL ELSE EASYLINE:=32768{:
848};{863:}THRESHOLD:=EQTB[4367].INT;
IF THRESHOLD>=0 THEN BEGIN IF EQTB[4399].INT>0 THEN BEGIN BEGINDIAGNOS;
PRINTNL(800);END;SECONDPASS:=FALSE;
END ELSE BEGIN THRESHOLD:=EQTB[4368].INT;SECONDPASS:=TRUE;
IF EQTB[4399].INT>0 THEN BEGINDIAGNOS;END;WHILE TRUE DO BEGIN{864:}
Q:=GETNODE(3);MEM[Q].HH.B0:=0;MEM[Q].HH.B1:=2;MEM[Q].HH.RH:=2993;
MEM[Q+1].HH.RH:=0;MEM[Q+1].HH.LH:=CURLIST.PGFIELD+1;MEM[Q+2].INT:=0;
MEM[2993].HH.RH:=Q;ACTIVEWIDTH[1]:=BACKGROUND[1];
ACTIVEWIDTH[2]:=BACKGROUND[2];ACTIVEWIDTH[3]:=BACKGROUND[3];
ACTIVEWIDTH[4]:=BACKGROUND[4];ACTIVEWIDTH[5]:=BACKGROUND[5];
ACTIVEWIDTH[6]:=BACKGROUND[6];PASSIVE:=0;PRINTEDNODE:=2997;
PASSNUMBER:=0;FONTINSHORTD:=0{:864};CURP:=MEM[2997].HH.RH;
AUTOBREAKING:=TRUE;PREVP:=CURP;
WHILE(CURP<>0)AND(MEM[2993].HH.RH<>2993)DO{866:}
BEGIN IF(CURP>=HIMEMMIN)THEN{867:}BEGIN PREVP:=CURP;
REPEAT F:=MEM[CURP].HH.B0;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
]+MEM[CURP].HH.B1].QQQQ.B0].INT;CURP:=MEM[CURP].HH.RH;
UNTIL NOT(CURP>=HIMEMMIN);END{:867};
CASE MEM[CURP].HH.B0 OF 0,1,2:ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1]
.INT;8:{1362:}{:1362};10:BEGIN{868:}
IF AUTOBREAKING THEN BEGIN IF(PREVP>=HIMEMMIN)THEN TRYBREAK(0,0)ELSE IF(
MEM[PREVP].HH.B0<9)THEN TRYBREAK(0,0);END{:868};{869:}
BEGIN IF(MEM[MEM[CURP+1].HH.LH].HH.B1<>0)AND(MEM[MEM[CURP+1].HH.LH+3].
INT<>0)THEN BEGIN MEM[CURP+1].HH.LH:=FINITESHRINK(MEM[CURP+1].HH.LH);
END;Q:=MEM[CURP+1].HH.LH;ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[Q+1].INT;
ACTIVEWIDTH[2+MEM[Q].HH.B0]:=ACTIVEWIDTH[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[Q+3].INT;END{:869};
IF SECONDPASS AND AUTOBREAKING THEN{894:}BEGIN S:=MEM[CURP].HH.RH;
IF S<>0 THEN BEGIN{896:}
WHILE TRUE DO BEGIN IF(S>=HIMEMMIN)THEN BEGIN C:=0+MEM[S].HH.B1-0;
HF:=MEM[S].HH.B0;
END ELSE IF MEM[S].HH.B0=6 THEN BEGIN Q:=MEM[S+1].HH.RH;
C:=0+MEM[Q].HH.B1-0;HF:=MEM[Q].HH.B0;
END ELSE IF(MEM[S].HH.B0=11)AND(MEM[S].HH.B1=0)THEN C:=128 ELSE IF MEM[S
].HH.B0=8 THEN C:=128 ELSE GOTO 31;
IF C<128 THEN IF EQTB[3855+C].HH.RH<>0 THEN IF(EQTB[3855+C].HH.RH=C)OR(
EQTB[4405].INT>0)THEN GOTO 32 ELSE GOTO 31;S:=MEM[S].HH.RH;END;
32:HYFCHAR:=HYPHENCHAR[HF];IF HYFCHAR<0 THEN GOTO 31;
IF HYFCHAR>255 THEN GOTO 31;HA:=S{:896};{897:}HN:=0;
WHILE TRUE DO BEGIN IF(S>=HIMEMMIN)THEN BEGIN IF MEM[S].HH.B0<>HF THEN
GOTO 33;C:=0+MEM[S].HH.B1-0;IF C>=128 THEN GOTO 33;
IF(EQTB[3855+C].HH.RH=0)OR(HN=63)THEN GOTO 33;HB:=S;HN:=HN+1;HU[HN]:=C;
HC[HN]:=EQTB[3855+C].HH.RH-1;END ELSE IF MEM[S].HH.B0=6 THEN{898:}
BEGIN J:=HN;Q:=MEM[S+1].HH.RH;IF MEM[Q].HH.B0<>HF THEN GOTO 33;
REPEAT C:=0+MEM[Q].HH.B1-0;IF C>=128 THEN GOTO 33;
IF(EQTB[3855+C].HH.RH=0)OR(J=63)THEN GOTO 33;J:=J+1;HU[J]:=C;
HC[J]:=EQTB[3855+C].HH.RH-1;Q:=MEM[Q].HH.RH;UNTIL Q=0;HB:=S;HN:=J;
END{:898}ELSE IF(MEM[S].HH.B0<>11)OR(MEM[S].HH.B1<>0)THEN GOTO 33;
S:=MEM[S].HH.RH;END;33:{:897};{899:}IF HN<5 THEN GOTO 31;
WHILE TRUE DO BEGIN IF NOT((S>=HIMEMMIN))THEN CASE MEM[S].HH.B0 OF 6:;
11:IF MEM[S].HH.B1<>0 THEN GOTO 34;8,10,12,3,5,4:GOTO 34;
OTHERS:GOTO 31 END;S:=MEM[S].HH.RH;END;34:{:899};HYPHENATE;END;
31:END{:894};END;
11:BEGIN IF NOT(MEM[CURP].HH.RH>=HIMEMMIN)AND AUTOBREAKING THEN IF MEM[
MEM[CURP].HH.RH].HH.B0=10 THEN TRYBREAK(0,0);
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;END;
6:BEGIN F:=MEM[CURP+1].HH.B0;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F
]+MEM[CURP+1].HH.B1].QQQQ.B0].INT;END;7:{870:}
BEGIN S:=MEM[CURP+1].HH.LH;DISCWIDTH:=0;
IF S=0 THEN TRYBREAK(EQTB[4371].INT,1)ELSE BEGIN REPEAT{871:}
IF(S>=HIMEMMIN)THEN BEGIN F:=MEM[S].HH.B0;
DISCWIDTH:=DISCWIDTH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[S].
HH.B1].QQQQ.B0].INT;
END ELSE CASE MEM[S].HH.B0 OF 6:BEGIN F:=MEM[S+1].HH.B0;
DISCWIDTH:=DISCWIDTH+FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[S+1]
.HH.B1].QQQQ.B0].INT;END;0,1,2,11:DISCWIDTH:=DISCWIDTH+MEM[S+1].INT;
OTHERS:CONFUSION(803)END{:871};S:=MEM[S].HH.RH;UNTIL S=0;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+DISCWIDTH;TRYBREAK(EQTB[4370].INT,1);
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]-DISCWIDTH;END;END{:870};
9:BEGIN AUTOBREAKING:=(MEM[CURP].HH.B1=1);
BEGIN IF NOT(MEM[CURP].HH.RH>=HIMEMMIN)AND AUTOBREAKING THEN IF MEM[MEM[
CURP].HH.RH].HH.B0=10 THEN TRYBREAK(0,0);
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+MEM[CURP+1].INT;END;END;
12:TRYBREAK(MEM[CURP+1].INT,0);4,3,5:;OTHERS:CONFUSION(802)END;
PREVP:=CURP;CURP:=MEM[CURP].HH.RH;END{:866};IF CURP=0 THEN{873:}
BEGIN TRYBREAK(-10000,1);IF MEM[2993].HH.RH<>2993 THEN BEGIN{874:}
R:=MEM[2993].HH.RH;FEWESTDEMERI:=1073741823;
REPEAT IF MEM[R].HH.B0<>2 THEN IF MEM[R+2].INT<FEWESTDEMERI THEN BEGIN
FEWESTDEMERI:=MEM[R+2].INT;BESTBET:=R;END;R:=MEM[R].HH.RH;UNTIL R=2993;
BESTLINE:=MEM[BESTBET+1].HH.LH{:874};IF EQTB[4386].INT=0 THEN GOTO 30;
{875:}BEGIN R:=MEM[2993].HH.RH;ACTUALLOOSEN:=0;
REPEAT IF MEM[R].HH.B0<>2 THEN BEGIN LINEDIFF:=MEM[R+1].HH.LH-BESTLINE;
IF((LINEDIFF<ACTUALLOOSEN)AND(EQTB[4386].INT<=LINEDIFF))OR((LINEDIFF>
ACTUALLOOSEN)AND(EQTB[4386].INT>=LINEDIFF))THEN BEGIN BESTBET:=R;
ACTUALLOOSEN:=LINEDIFF;FEWESTDEMERI:=MEM[R+2].INT;
END ELSE IF(LINEDIFF=ACTUALLOOSEN)AND(MEM[R+2].INT<FEWESTDEMERI)THEN
BEGIN BESTBET:=R;FEWESTDEMERI:=MEM[R+2].INT;END;END;R:=MEM[R].HH.RH;
UNTIL R=2993;BESTLINE:=MEM[BESTBET+1].HH.LH;END{:875};
IF(ACTUALLOOSEN=EQTB[4386].INT)OR SECONDPASS THEN GOTO 30;END;END{:873};
{865:}Q:=MEM[2993].HH.RH;WHILE Q<>2993 DO BEGIN CURP:=MEM[Q].HH.RH;
IF MEM[Q].HH.B0=2 THEN FREENODE(Q,7)ELSE FREENODE(Q,3);Q:=CURP;END;
Q:=PASSIVE;WHILE Q<>0 DO BEGIN CURP:=MEM[Q].HH.RH;FREENODE(Q,2);Q:=CURP;
END{:865};IF EQTB[4399].INT>0 THEN PRINTNL(801);
THRESHOLD:=EQTB[4368].INT;SECONDPASS:=TRUE;END;
30:IF EQTB[4399].INT>0 THEN ENDDIAGNOSTI(TRUE);{:863};{876:}
POSTLINEBREA(FINALWIDOWPE){:876};{865:}Q:=MEM[2993].HH.RH;
WHILE Q<>2993 DO BEGIN CURP:=MEM[Q].HH.RH;
IF MEM[Q].HH.B0=2 THEN FREENODE(Q,7)ELSE FREENODE(Q,3);Q:=CURP;END;
Q:=PASSIVE;WHILE Q<>0 DO BEGIN CURP:=MEM[Q].HH.RH;FREENODE(Q,2);Q:=CURP;
END{:865};PACKBEGINLIN:=0;END;{:815}{934:}PROCEDURE NEWHYPHEXCEP;
LABEL 21,10,40,45,30;VAR N:SMALLNUMBER;J:SMALLNUMBER;H:HYPHPOINTER;
K:STRNUMBER;P:HALFWORD;Q:HALFWORD;S,T:STRNUMBER;U,V:POOLPOINTER;
BEGIN SCANLEFTBRAC;{935:}N:=0;P:=0;WHILE TRUE DO BEGIN GETXTOKEN;
21:CASE CURCMD OF 11,12,67:{937:}IF CURCHR=45 THEN{938:}
BEGIN IF N>1 THEN BEGIN Q:=GETAVAIL;MEM[Q].HH.RH:=P;MEM[Q].HH.LH:=N;
P:=Q;END;END{:938}
ELSE BEGIN IF(CURCHR>127)OR(EQTB[3855+CURCHR].HH.RH=0)THEN BEGIN BEGIN
IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(810);
END;BEGIN HELPPTR:=2;HELPLINE[1]:=811;HELPLINE[0]:=812;END;ERROR;
END ELSE IF N<63 THEN BEGIN N:=N+1;HC[N]:=EQTB[3855+CURCHR].HH.RH-1;END;
END{:937};16:BEGIN SCANCHARNUM;CURCHR:=CURVAL;CURCMD:=67;GOTO 21;END;
10,2:BEGIN IF N>4 THEN{939:}
BEGIN BEGIN IF POOLPTR+N>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR
);END;H:=0;FOR J:=1 TO N DO BEGIN H:=(H+H+HC[J])MOD 307;
BEGIN STRPOOL[POOLPTR]:=HC[J];POOLPTR:=POOLPTR+1;END;END;S:=MAKESTRING;
WHILE TRUE DO BEGIN IF P=0 THEN GOTO 30;
IF MEM[P].HH.LH<N-2 THEN GOTO 30;Q:=MEM[P].HH.RH;
BEGIN MEM[P].HH.RH:=AVAIL;AVAIL:=P;DYNUSED:=DYNUSED-1;END;P:=Q;END;
30:{940:}IF HYPHCOUNT=307 THEN OVERFLOW(813,307);HYPHCOUNT:=HYPHCOUNT+1;
WHILE HYPHWORD[H]<>0 DO BEGIN{941:}K:=HYPHWORD[H];
IF(STRSTART[K+1]-STRSTART[K])<(STRSTART[S+1]-STRSTART[S])THEN GOTO 40;
IF(STRSTART[K+1]-STRSTART[K])>(STRSTART[S+1]-STRSTART[S])THEN GOTO 45;
U:=STRSTART[K];V:=STRSTART[S];
REPEAT IF STRPOOL[U]<STRPOOL[V]THEN GOTO 40;
IF STRPOOL[U]>STRPOOL[V]THEN GOTO 45;U:=U+1;V:=V+1;
UNTIL U=STRSTART[K+1];40:Q:=HYPHLIST[H];HYPHLIST[H]:=P;P:=Q;
T:=HYPHWORD[H];HYPHWORD[H]:=S;S:=T;45:{:941};
IF H>0 THEN H:=H-1 ELSE H:=307;END;HYPHWORD[H]:=S;HYPHLIST[H]:=P{:940};
END{:939};IF CURCMD=2 THEN GOTO 10;N:=0;P:=0;END;OTHERS:{936:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(544);END;PRINTESC(806);PRINT(807);BEGIN HELPPTR:=2;
HELPLINE[1]:=808;HELPLINE[0]:=809;END;ERROR;END{:936}END;END{:935};
10:END;{:934}{942:}{944:}FUNCTION NEWTRIEOP(D,N:SMALLNUMBER;
V:QUARTERWORD):QUARTERWORD;LABEL 10;VAR H:0..510;U:QUARTERWORD;
BEGIN H:=ABS(N+313*D+361*V)MOD 510;WHILE TRUE DO BEGIN U:=TRIEOPHASH[H];
IF U=0 THEN BEGIN IF TRIEOPPTR=255 THEN BEGIN NEWTRIEOP:=0;GOTO 10;END;
TRIEOPPTR:=TRIEOPPTR+1;HYFDISTANCE[TRIEOPPTR]:=D;HYFNUM[TRIEOPPTR]:=N;
HYFNEXT[TRIEOPPTR]:=V;TRIEOPHASH[H]:=TRIEOPPTR;NEWTRIEOP:=TRIEOPPTR;
GOTO 10;END;
IF(HYFDISTANCE[U]=D)AND(HYFNUM[U]=N)AND(HYFNEXT[U]=V)THEN BEGIN
NEWTRIEOP:=U;GOTO 10;END;IF H>0 THEN H:=H-1 ELSE H:=510;END;10:END;
{:944}{947:}FUNCTION TRIENODE(P:TRIEPOINTER):TRIEPOINTER;LABEL 10;
VAR H:TRIEPOINTER;Q:TRIEPOINTER;
BEGIN H:=ABS(TRIEC[P]+1009*TRIEO[P]+2718*TRIEL[P]+3142*TRIER[P])MOD
TRIESIZE;WHILE TRUE DO BEGIN Q:=TRIEHASH[H];
IF Q=0 THEN BEGIN TRIEHASH[H]:=P;TRIENODE:=P;GOTO 10;END;
IF(TRIEC[Q]=TRIEC[P])AND(TRIEO[Q]=TRIEO[P])AND(TRIEL[Q]=TRIEL[P])AND(
TRIER[Q]=TRIER[P])THEN BEGIN TRIENODE:=Q;GOTO 10;END;
IF H>0 THEN H:=H-1 ELSE H:=TRIESIZE;END;10:END;{:947}{948:}
FUNCTION COMPRESSTRIE(P:TRIEPOINTER):TRIEPOINTER;
BEGIN IF P=0 THEN COMPRESSTRIE:=0 ELSE BEGIN TRIEL[P]:=COMPRESSTRIE(
TRIEL[P]);TRIER[P]:=COMPRESSTRIE(TRIER[P]);COMPRESSTRIE:=TRIENODE(P);
END;END;{:948}{949:}PROCEDURE INITPATTERNM;VAR H:0..510;P:TRIEPOINTER;
BEGIN FOR H:=0 TO 510 DO TRIEOPHASH[H]:=0;TRIEOPPTR:=0;TRIEL[0]:=0;
TRIEC[0]:=0;TRIEPTR:=0;FOR P:=0 TO TRIESIZE DO TRIEHASH[P]:=0;END;{:949}
{951:}PROCEDURE INITTRIEMEMO;VAR P:TRIEPOINTER;
BEGIN FOR P:=0 TO TRIEPTR DO TRIEHASH[P]:=0;TRIEMAX:=128;TRIEMIN:=128;
TRIE[0].RH:=1;TRIETAKEN[0]:=FALSE;
FOR P:=1 TO 128 DO BEGIN TRIE[P].LH:=P-1;TRIE[P].RH:=P+1;
TRIETAKEN[P]:=FALSE;END;END;{:951}{953:}
PROCEDURE FIRSTFIT(P:TRIEPOINTER);LABEL 45,40;VAR H:TRIEPOINTER;
Z:TRIEPOINTER;Q:TRIEPOINTER;C:ASCIICODE;BEGIN C:=TRIEC[P];
IF C<TRIEMIN THEN TRIEMIN:=C;Z:=TRIE[TRIEMIN-1].RH;
WHILE TRUE DO BEGIN IF Z<C THEN GOTO 45;H:=Z-C;{954:}
IF TRIEMAX<H+128 THEN BEGIN IF TRIESIZE<=H+128 THEN OVERFLOW(814,
TRIESIZE);REPEAT TRIEMAX:=TRIEMAX+1;TRIETAKEN[TRIEMAX]:=FALSE;
TRIE[TRIEMAX].RH:=TRIEMAX+1;TRIE[TRIEMAX].LH:=TRIEMAX-1;
UNTIL TRIEMAX=H+128;END{:954};IF TRIETAKEN[H]THEN GOTO 45;{955:}
Q:=TRIER[P];WHILE Q>0 DO BEGIN IF TRIE[H+TRIEC[Q]].RH=0 THEN GOTO 45;
Q:=TRIER[Q];END;GOTO 40{:955};45:Z:=TRIE[Z].RH;END;40:{956:}
TRIETAKEN[H]:=TRUE;TRIEHASH[P]:=H;Q:=P;REPEAT Z:=H+TRIEC[Q];
TRIE[TRIE[Z].RH].LH:=TRIE[Z].LH;TRIE[TRIE[Z].LH].RH:=TRIE[Z].RH;
TRIE[Z].RH:=0;Q:=TRIER[Q];UNTIL Q=0{:956};END;{:953}{957:}
PROCEDURE TRIEPACK(P:TRIEPOINTER);VAR Q:TRIEPOINTER;
BEGIN REPEAT Q:=TRIEL[P];
IF(Q>0)AND(TRIEHASH[Q]=0)THEN BEGIN FIRSTFIT(Q);TRIEPACK(Q);END;
P:=TRIER[P];UNTIL P=0;END;{:957}{959:}PROCEDURE TRIEFIX(P:TRIEPOINTER);
VAR Q:TRIEPOINTER;C:ASCIICODE;Z:TRIEPOINTER;BEGIN Z:=TRIEHASH[P];
WHILE P<>0 DO BEGIN Q:=TRIEL[P];C:=TRIEC[P];TRIE[Z+C].RH:=TRIEHASH[Q];
TRIE[Z+C].B1:=C;TRIE[Z+C].B0:=TRIEO[P];IF Q>0 THEN TRIEFIX(Q);
P:=TRIER[P];END;END;{:959}{960:}PROCEDURE NEWPATTERNS;LABEL 30,31;
VAR K,L:SMALLNUMBER;DIGITSENSED:BOOLEAN;V:QUARTERWORD;P,Q:TRIEPOINTER;
FIRSTCHILD:BOOLEAN;C:ASCIICODE;R,S:TRIEPOINTER;H:TWOHALVES;
BEGIN SCANLEFTBRAC;INITPATTERNM;{961:}K:=0;HYF[0]:=0;DIGITSENSED:=FALSE;
WHILE TRUE DO BEGIN GETXTOKEN;CASE CURCMD OF 11,12:{962:}
IF DIGITSENSED OR(CURCHR<48)OR(CURCHR>57)THEN BEGIN IF CURCHR=46 THEN
CURCHR:=128 ELSE BEGIN CURCHR:=EQTB[3855+CURCHR].HH.RH;
IF CURCHR=0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(818);END;BEGIN HELPPTR:=1;HELPLINE[0]:=817;END;
ERROR;CURCHR:=128;END;END;IF K<63 THEN BEGIN K:=K+1;HC[K]:=CURCHR-1;
HYF[K]:=0;DIGITSENSED:=FALSE;END;END ELSE BEGIN HYF[K]:=CURCHR-48;
IF K<63 THEN DIGITSENSED:=TRUE;END{:962};10,2:BEGIN IF K>0 THEN{963:}
BEGIN{965:}IF HC[1]=127 THEN HYF[0]:=0;IF HC[K]=127 THEN HYF[K]:=0;L:=K;
V:=0;WHILE TRUE DO BEGIN IF HYF[L]<>0 THEN V:=NEWTRIEOP(K-L,HYF[L],V);
IF L>0 THEN L:=L-1 ELSE GOTO 31;END;31:{:965};Q:=0;
WHILE L<K DO BEGIN L:=L+1;C:=HC[L];P:=TRIEL[Q];FIRSTCHILD:=TRUE;
WHILE(P>0)AND(C>TRIEC[P])DO BEGIN Q:=P;P:=TRIER[Q];FIRSTCHILD:=FALSE;
END;IF(P=0)OR(C<TRIEC[P])THEN{964:}
BEGIN IF TRIEPTR=TRIESIZE THEN OVERFLOW(814,TRIESIZE);
TRIEPTR:=TRIEPTR+1;TRIER[TRIEPTR]:=P;P:=TRIEPTR;TRIEL[P]:=0;
IF FIRSTCHILD THEN TRIEL[Q]:=P ELSE TRIER[Q]:=P;TRIEC[P]:=C;TRIEO[P]:=0;
END{:964};Q:=P;END;
IF TRIEO[Q]<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(819);END;BEGIN HELPPTR:=1;HELPLINE[0]:=817;
END;ERROR;END;TRIEO[Q]:=V;END{:963};IF CURCMD=2 THEN GOTO 30;K:=0;
HYF[0]:=0;DIGITSENSED:=FALSE;END;
OTHERS:BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(815);END;PRINTESC(816);BEGIN HELPPTR:=1;
HELPLINE[0]:=817;END;ERROR;END END;END;30:{:961};
TRIEL[0]:=COMPRESSTRIE(TRIEL[0]);{966:}INITTRIEMEMO;
IF TRIEL[0]<>0 THEN BEGIN FIRSTFIT(TRIEL[0]);TRIEPACK(TRIEL[0]);END;
{958:}R:=0;WHILE TRIETAKEN[R]DO R:=R+1;TRIEHASH[0]:=R;
TRIEFIX(TRIEL[0]){:958};R:=0;H.RH:=0;H.B0:=0;H.B1:=0;
REPEAT S:=TRIE[R].RH;TRIE[R]:=H;R:=S;UNTIL R>TRIEMAX{:966};END;{:960}
{:942}{968:}FUNCTION PRUNEPAGETOP(P:HALFWORD):HALFWORD;
VAR PREVP:HALFWORD;Q:HALFWORD;BEGIN PREVP:=2997;MEM[2997].HH.RH:=P;
WHILE P<>0 DO CASE MEM[P].HH.B0 OF 0,1,2:{969:}
BEGIN Q:=NEWSKIPPARAM(10);MEM[PREVP].HH.RH:=Q;MEM[Q].HH.RH:=P;
IF MEM[TEMPPTR+1].INT>MEM[P+3].INT THEN MEM[TEMPPTR+1].INT:=MEM[TEMPPTR
+1].INT-MEM[P+3].INT ELSE MEM[TEMPPTR+1].INT:=0;P:=0;END{:969};
8,4,3:BEGIN PREVP:=P;P:=MEM[PREVP].HH.RH;END;10,11,12:BEGIN Q:=P;
P:=MEM[Q].HH.RH;MEM[Q].HH.RH:=0;MEM[PREVP].HH.RH:=P;FLUSHNODELIS(Q);END;
OTHERS:CONFUSION(820)END;PRUNEPAGETOP:=MEM[2997].HH.RH;END;{:968}{970:}
FUNCTION VERTBREAK(P:HALFWORD;H,D:SCALED):HALFWORD;LABEL 30,45,90;
VAR PREVP:HALFWORD;Q,R:HALFWORD;PI:INTEGER;B:INTEGER;LEASTCOST:INTEGER;
BESTPLACE:HALFWORD;PREVDP:SCALED;T:SMALLNUMBER;BEGIN PREVP:=P;
LEASTCOST:=1073741823;ACTIVEWIDTH[1]:=0;ACTIVEWIDTH[2]:=0;
ACTIVEWIDTH[3]:=0;ACTIVEWIDTH[4]:=0;ACTIVEWIDTH[5]:=0;ACTIVEWIDTH[6]:=0;
PREVDP:=0;WHILE TRUE DO BEGIN{972:}IF P=0 THEN PI:=-10000 ELSE{973:}
CASE MEM[P].HH.B0 OF 0,1,2:BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP+
MEM[P+3].INT;PREVDP:=MEM[P+2].INT;GOTO 45;END;8:{1364:}GOTO 45{:1364};
10:IF(MEM[PREVP].HH.B0<9)THEN PI:=0 ELSE GOTO 90;
11:BEGIN IF MEM[P].HH.RH=0 THEN T:=12 ELSE T:=MEM[MEM[P].HH.RH].HH.B0;
IF T=10 THEN PI:=0 ELSE GOTO 90;END;12:PI:=MEM[P+1].INT;4,3:GOTO 45;
OTHERS:CONFUSION(821)END{:973};{974:}IF PI<10000 THEN BEGIN{975:}
IF ACTIVEWIDTH[1]<H THEN IF(ACTIVEWIDTH[3]<>0)OR(ACTIVEWIDTH[4]<>0)OR(
ACTIVEWIDTH[5]<>0)THEN B:=0 ELSE B:=BADNESS(H-ACTIVEWIDTH[1],ACTIVEWIDTH
[2])ELSE IF ACTIVEWIDTH[1]-H>ACTIVEWIDTH[6]THEN B:=1073741823 ELSE B:=
BADNESS(ACTIVEWIDTH[1]-H,ACTIVEWIDTH[6]){:975};
IF B<1073741823 THEN IF PI<=-10000 THEN B:=PI ELSE IF B<10000 THEN B:=B+
PI ELSE B:=100000;IF B<=LEASTCOST THEN BEGIN BESTPLACE:=P;LEASTCOST:=B;
BESTHEIGHTPL:=ACTIVEWIDTH[1]+PREVDP;END;
IF(B=1073741823)OR(PI<=-10000)THEN GOTO 30;END{:974};
IF(MEM[P].HH.B0<10)OR(MEM[P].HH.B0>11)THEN GOTO 45;90:{976:}
IF MEM[P].HH.B0=11 THEN Q:=P ELSE BEGIN Q:=MEM[P+1].HH.LH;
ACTIVEWIDTH[2+MEM[Q].HH.B0]:=ACTIVEWIDTH[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
ACTIVEWIDTH[6]:=ACTIVEWIDTH[6]+MEM[Q+3].INT;
IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN BEGIN IF INTERACTION=3
THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(822);END;
BEGIN HELPPTR:=4;HELPLINE[3]:=823;HELPLINE[2]:=824;HELPLINE[1]:=825;
HELPLINE[0]:=789;END;ERROR;R:=NEWSPEC(Q);MEM[R].HH.B1:=0;
DELETEGLUERE(Q);MEM[P+1].HH.LH:=R;END;END;
ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP+MEM[Q+1].INT;PREVDP:=0{:976};
45:IF PREVDP>D THEN BEGIN ACTIVEWIDTH[1]:=ACTIVEWIDTH[1]+PREVDP-D;
PREVDP:=D;END;{:972};PREVP:=P;P:=MEM[PREVP].HH.RH;END;
30:VERTBREAK:=BESTPLACE;END;{:970}{977:}FUNCTION VSPLIT(N:EIGHTBITS;
H:SCALED):HALFWORD;LABEL 10,30;VAR V:HALFWORD;P:HALFWORD;Q:HALFWORD;
BEGIN V:=EQTB[3422+N].HH.RH;
IF CURMARK[3]<>0 THEN BEGIN DELETETOKENR(CURMARK[3]);CURMARK[3]:=0;
DELETETOKENR(CURMARK[4]);CURMARK[4]:=0;END;{978:}
IF V=0 THEN BEGIN VSPLIT:=0;GOTO 10;END;
IF MEM[V].HH.B0<>1 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(210);END;PRINTESC(826);PRINT(827);
PRINTESC(828);BEGIN HELPPTR:=2;HELPLINE[1]:=829;HELPLINE[0]:=830;END;
ERROR;VSPLIT:=0;GOTO 10;END{:978};
Q:=VERTBREAK(MEM[V+5].HH.RH,H,EQTB[4807].INT);{979:}P:=MEM[V+5].HH.RH;
IF P=Q THEN MEM[V+5].HH.RH:=0 ELSE WHILE TRUE DO BEGIN IF MEM[P].HH.B0=4
THEN IF CURMARK[3]=0 THEN BEGIN CURMARK[3]:=MEM[P+1].INT;
CURMARK[4]:=CURMARK[3];MEM[CURMARK[3]].HH.LH:=MEM[CURMARK[3]].HH.LH+2;
END ELSE BEGIN DELETETOKENR(CURMARK[4]);CURMARK[4]:=MEM[P+1].INT;
MEM[CURMARK[4]].HH.LH:=MEM[CURMARK[4]].HH.LH+1;END;
IF MEM[P].HH.RH=Q THEN BEGIN MEM[P].HH.RH:=0;GOTO 30;END;
P:=MEM[P].HH.RH;END;30:{:979};Q:=PRUNEPAGETOP(Q);P:=MEM[V+5].HH.RH;
FREENODE(V,7);
IF Q=0 THEN EQTB[3422+N].HH.RH:=0 ELSE EQTB[3422+N].HH.RH:=VPACKAGE(Q,0,
1,1073741823);VSPLIT:=VPACKAGE(P,H,0,EQTB[4807].INT);10:END;{:977}{985:}
PROCEDURE PRINTTOTALS;BEGIN PRINTSCALED(PAGESOFAR[1]);
IF PAGESOFAR[2]<>0 THEN BEGIN PRINT(184);PRINTSCALED(PAGESOFAR[2]);
PRINT(210);END;IF PAGESOFAR[3]<>0 THEN BEGIN PRINT(184);
PRINTSCALED(PAGESOFAR[3]);PRINT(183);END;
IF PAGESOFAR[4]<>0 THEN BEGIN PRINT(184);PRINTSCALED(PAGESOFAR[4]);
PRINT(839);END;IF PAGESOFAR[5]<>0 THEN BEGIN PRINT(184);
PRINTSCALED(PAGESOFAR[5]);PRINT(840);END;
IF PAGESOFAR[6]<>0 THEN BEGIN PRINT(185);PRINTSCALED(PAGESOFAR[6]);END;
END;{:985}{987:}PROCEDURE FREEZEPAGESP(S:SMALLNUMBER);
BEGIN PAGECONTENTS:=S;PAGESOFAR[0]:=EQTB[4805].INT;
PAGEMAXDEPTH:=EQTB[4806].INT;PAGESOFAR[7]:=0;PAGESOFAR[1]:=0;
PAGESOFAR[2]:=0;PAGESOFAR[3]:=0;PAGESOFAR[4]:=0;PAGESOFAR[5]:=0;
PAGESOFAR[6]:=0;LEASTPAGECOS:=1073741823;
IF EQTB[4400].INT>0 THEN BEGIN BEGINDIAGNOS;PRINTNL(848);
PRINTSCALED(PAGESOFAR[0]);PRINT(849);PRINTSCALED(PAGEMAXDEPTH);
ENDDIAGNOSTI(FALSE);END;END;{:987}{992:}PROCEDURE BOXERROR(N:EIGHTBITS);
BEGIN ERROR;BEGINDIAGNOS;PRINTNL(701);SHOWBOX(EQTB[3422+N].HH.RH);
ENDDIAGNOSTI(TRUE);FLUSHNODELIS(EQTB[3422+N].HH.RH);
EQTB[3422+N].HH.RH:=0;END;{:992}{993:}PROCEDURE ENSUREVBOX(N:EIGHTBITS);
VAR P:HALFWORD;BEGIN P:=EQTB[3422+N].HH.RH;
IF P<>0 THEN IF MEM[P].HH.B0=0 THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(850);END;BEGIN HELPPTR:=3;
HELPLINE[2]:=851;HELPLINE[1]:=852;HELPLINE[0]:=853;END;BOXERROR(N);END;
END;{:993}{994:}{1012:}PROCEDURE FIREUP(C:HALFWORD);LABEL 10;
VAR P,Q,R,S:HALFWORD;PREVP:HALFWORD;N:0..255;WAIT:BOOLEAN;
SAVEVBADNESS:INTEGER;SAVEVFUZZ:SCALED;SAVESPLITTOP:HALFWORD;BEGIN{1013:}
IF MEM[BESTPAGEBREA].HH.B0=12 THEN BEGIN GEQWORDDEFIN(4406,MEM[
BESTPAGEBREA+1].INT);MEM[BESTPAGEBREA+1].INT:=10000;
END ELSE GEQWORDDEFIN(4406,10000){:1013};
IF CURMARK[2]<>0 THEN BEGIN IF CURMARK[0]<>0 THEN DELETETOKENR(CURMARK[0
]);CURMARK[0]:=CURMARK[2];
MEM[CURMARK[0]].HH.LH:=MEM[CURMARK[0]].HH.LH+1;DELETETOKENR(CURMARK[1]);
CURMARK[1]:=0;END;{1014:}IF C=BESTPAGEBREA THEN BESTPAGEBREA:=0;{1015:}
IF EQTB[3677].HH.RH<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(210);END;PRINTESC(278);PRINT(864);
BEGIN HELPPTR:=2;HELPLINE[1]:=865;HELPLINE[0]:=853;END;BOXERROR(255);
END{:1015};INSERTPENALT:=0;SAVESPLITTOP:=EQTB[2636].HH.RH;{1018:}
R:=MEM[3000].HH.RH;
WHILE R<>3000 DO BEGIN IF MEM[R+2].HH.LH<>0 THEN BEGIN N:=0+MEM[R].HH.B1
-0;ENSUREVBOX(N);
IF EQTB[3422+N].HH.RH=0 THEN EQTB[3422+N].HH.RH:=NEWNULLBOX;
P:=EQTB[3422+N].HH.RH+5;WHILE MEM[P].HH.RH<>0 DO P:=MEM[P].HH.RH;
MEM[R+2].HH.RH:=P;END;R:=MEM[R].HH.RH;END{:1018};Q:=2996;
MEM[Q].HH.RH:=0;PREVP:=2998;P:=MEM[PREVP].HH.RH;
WHILE P<>BESTPAGEBREA DO BEGIN IF MEM[P].HH.B0=3 THEN{1020:}
BEGIN R:=MEM[3000].HH.RH;
WHILE MEM[R].HH.B1<>MEM[P].HH.B1 DO R:=MEM[R].HH.RH;
IF MEM[R+2].HH.LH=0 THEN WAIT:=TRUE ELSE BEGIN WAIT:=FALSE;
S:=MEM[P+4].HH.LH;MEM[MEM[R+2].HH.RH].HH.RH:=S;S:=MEM[R+2].HH.RH;
IF MEM[R+2].HH.LH=P THEN{1021:}
BEGIN IF MEM[R].HH.B0=1 THEN IF(MEM[R+1].HH.LH=P)AND(MEM[R+1].HH.RH<>0)
THEN BEGIN WHILE MEM[S].HH.RH<>MEM[R+1].HH.RH DO S:=MEM[S].HH.RH;
EQTB[2636].HH.RH:=MEM[P+4].HH.RH;
MEM[P+4].HH.LH:=PRUNEPAGETOP(MEM[R+1].HH.RH);
IF MEM[P+4].HH.LH<>0 THEN BEGIN TEMPPTR:=VPACKAGE(MEM[P+4].HH.LH,0,1,
1073741823);MEM[P+3].INT:=MEM[TEMPPTR+3].INT+MEM[TEMPPTR+2].INT;
FREENODE(TEMPPTR,7);WAIT:=TRUE;END;MEM[S].HH.RH:=0;END;
MEM[R+2].HH.LH:=0;N:=0+MEM[R].HH.B1-0;
TEMPPTR:=MEM[EQTB[3422+N].HH.RH+5].HH.RH;FREENODE(EQTB[3422+N].HH.RH,7);
EQTB[3422+N].HH.RH:=VPACKAGE(TEMPPTR,0,1,1073741823);END{:1021}
ELSE BEGIN WHILE MEM[S].HH.RH<>0 DO S:=MEM[S].HH.RH;MEM[R+2].HH.RH:=S;
END;END;{1022:}MEM[PREVP].HH.RH:=MEM[P].HH.RH;MEM[P].HH.RH:=0;
IF WAIT THEN BEGIN MEM[Q].HH.RH:=P;Q:=P;INSERTPENALT:=INSERTPENALT+1;
END ELSE BEGIN DELETEGLUERE(MEM[P+4].HH.RH);FREENODE(P,5);END;
P:=PREVP{:1022};END{:1020}ELSE IF MEM[P].HH.B0=4 THEN{1016:}
BEGIN IF CURMARK[1]=0 THEN BEGIN CURMARK[1]:=MEM[P+1].INT;
MEM[CURMARK[1]].HH.LH:=MEM[CURMARK[1]].HH.LH+1;END;
IF CURMARK[2]<>0 THEN DELETETOKENR(CURMARK[2]);CURMARK[2]:=MEM[P+1].INT;
MEM[CURMARK[2]].HH.LH:=MEM[CURMARK[2]].HH.LH+1;END{:1016};PREVP:=P;
P:=MEM[PREVP].HH.RH;END;EQTB[2636].HH.RH:=SAVESPLITTOP;{1017:}
IF P<>0 THEN BEGIN IF MEM[2999].HH.RH=0 THEN IF NESTPTR=0 THEN CURLIST.
TAILFIELD:=PAGETAIL ELSE NEST[0].TAILFIELD:=PAGETAIL;
MEM[PAGETAIL].HH.RH:=MEM[2999].HH.RH;MEM[2999].HH.RH:=P;
MEM[PREVP].HH.RH:=0;END;SAVEVBADNESS:=EQTB[4394].INT;
EQTB[4394].INT:=10000;SAVEVFUZZ:=EQTB[4810].INT;
EQTB[4810].INT:=1073741823;
EQTB[3677].HH.RH:=VPACKAGE(MEM[2998].HH.RH,BESTSIZE,0,PAGEMAXDEPTH);
EQTB[4394].INT:=SAVEVBADNESS;EQTB[4810].INT:=SAVEVFUZZ;
IF LASTGLUE<>32768 THEN DELETEGLUERE(LASTGLUE);{991:}PAGECONTENTS:=0;
PAGETAIL:=2998;MEM[2998].HH.RH:=0;LASTGLUE:=32768;LASTPENALTY:=0;
LASTKERN:=0;PAGESOFAR[7]:=0;PAGEMAXDEPTH:=0{:991};
IF Q<>2996 THEN BEGIN MEM[2998].HH.RH:=MEM[2996].HH.RH;PAGETAIL:=Q;
END{:1017};{1019:}R:=MEM[3000].HH.RH;
WHILE R<>3000 DO BEGIN Q:=MEM[R].HH.RH;FREENODE(R,4);R:=Q;END;
MEM[3000].HH.RH:=3000{:1019}{:1014};
IF(CURMARK[0]<>0)AND(CURMARK[1]=0)THEN BEGIN CURMARK[1]:=CURMARK[0];
MEM[CURMARK[0]].HH.LH:=MEM[CURMARK[0]].HH.LH+1;END;
IF EQTB[3157].HH.RH<>0 THEN IF DEADCYCLES>=EQTB[4407].INT THEN{1024:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(866);END;PRINTINT(DEADCYCLES);PRINT(867);BEGIN HELPPTR:=3;
HELPLINE[2]:=868;HELPLINE[1]:=869;HELPLINE[0]:=870;END;ERROR;END{:1024}
ELSE{1025:}BEGIN OUTPUTACTIVE:=TRUE;DEADCYCLES:=DEADCYCLES+1;PUSHNEST;
CURLIST.MODEFIELD:=-1;CURLIST.AUXFIELD:=-65536000;
CURLIST.MLFIELD:=-LINE;BEGINTOKENLI(EQTB[3157].HH.RH,6);NEWSAVELEVEL(8);
NORMALPARAGR;SCANLEFTBRAC;GOTO 10;END{:1025};{1023:}
BEGIN IF MEM[2998].HH.RH<>0 THEN BEGIN IF MEM[2999].HH.RH=0 THEN IF
NESTPTR=0 THEN CURLIST.TAILFIELD:=PAGETAIL ELSE NEST[0].TAILFIELD:=
PAGETAIL ELSE MEM[PAGETAIL].HH.RH:=MEM[2999].HH.RH;
MEM[2999].HH.RH:=MEM[2998].HH.RH;MEM[2998].HH.RH:=0;PAGETAIL:=2998;END;
SHIPOUT(EQTB[3677].HH.RH);EQTB[3677].HH.RH:=0;END{:1023};10:END;{:1012}
PROCEDURE BUILDPAGE;LABEL 10,30,31,22,80,90;VAR P:HALFWORD;Q,R:HALFWORD;
B,C:INTEGER;PI:INTEGER;N:0..255;DELTA,H,W:SCALED;
BEGIN IF(MEM[2999].HH.RH=0)OR OUTPUTACTIVE THEN GOTO 10;
REPEAT 22:P:=MEM[2999].HH.RH;{996:}
IF LASTGLUE<>32768 THEN DELETEGLUERE(LASTGLUE);LASTPENALTY:=0;
LASTKERN:=0;IF MEM[P].HH.B0=10 THEN BEGIN LASTGLUE:=MEM[P+1].HH.LH;
MEM[LASTGLUE].HH.RH:=MEM[LASTGLUE].HH.RH+1;
END ELSE BEGIN LASTGLUE:=32768;
IF MEM[P].HH.B0=12 THEN LASTPENALTY:=MEM[P+1].INT ELSE IF MEM[P].HH.B0=
11 THEN LASTKERN:=MEM[P+1].INT;END{:996};{997:}{1000:}
CASE MEM[P].HH.B0 OF 0,1,2:IF PAGECONTENTS<2 THEN{1001:}
BEGIN IF PAGECONTENTS=0 THEN FREEZEPAGESP(2)ELSE PAGECONTENTS:=2;
Q:=NEWSKIPPARAM(9);MEM[Q].HH.RH:=P;
IF MEM[TEMPPTR+1].INT>MEM[P+3].INT THEN MEM[TEMPPTR+1].INT:=MEM[TEMPPTR
+1].INT-MEM[P+3].INT ELSE MEM[TEMPPTR+1].INT:=0;MEM[Q].HH.RH:=P;
MEM[2999].HH.RH:=Q;GOTO 22;END{:1001}ELSE{1002:}
BEGIN PAGESOFAR[1]:=PAGESOFAR[1]+PAGESOFAR[7]+MEM[P+3].INT;
PAGESOFAR[7]:=MEM[P+2].INT;GOTO 80;END{:1002};8:{1363:}GOTO 80{:1363};
10:IF PAGECONTENTS<2 THEN GOTO 31 ELSE IF(MEM[PAGETAIL].HH.B0<9)THEN PI
:=0 ELSE GOTO 90;
11:IF PAGECONTENTS<2 THEN GOTO 31 ELSE IF MEM[P].HH.RH=0 THEN GOTO 10
ELSE IF MEM[MEM[P].HH.RH].HH.B0=10 THEN PI:=0 ELSE GOTO 90;
12:IF PAGECONTENTS<2 THEN GOTO 31 ELSE PI:=MEM[P+1].INT;4:GOTO 80;
3:{1008:}BEGIN IF PAGECONTENTS=0 THEN FREEZEPAGESP(1);N:=MEM[P].HH.B1;
R:=3000;WHILE N>=MEM[MEM[R].HH.RH].HH.B1 DO R:=MEM[R].HH.RH;N:=0+N-0;
IF MEM[R].HH.B1<>0+N+0 THEN{1009:}BEGIN Q:=GETNODE(4);
MEM[Q].HH.RH:=MEM[R].HH.RH;MEM[R].HH.RH:=Q;R:=Q;MEM[R].HH.B1:=0+N+0;
MEM[R].HH.B0:=0;ENSUREVBOX(N);
IF EQTB[3422+N].HH.RH=0 THEN MEM[R+3].INT:=0 ELSE MEM[R+3].INT:=MEM[EQTB
[3422+N].HH.RH+3].INT+MEM[EQTB[3422+N].HH.RH+2].INT;MEM[R+2].HH.LH:=0;
Q:=EQTB[2644+N].HH.RH;
IF EQTB[4417+N].INT=1000 THEN H:=MEM[R+3].INT ELSE H:=XOVERN(MEM[R+3].
INT,1000)*EQTB[4417+N].INT;PAGESOFAR[0]:=PAGESOFAR[0]-H-MEM[Q+1].INT;
PAGESOFAR[2+MEM[Q].HH.B0]:=PAGESOFAR[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
PAGESOFAR[6]:=PAGESOFAR[6]+MEM[Q+3].INT;
IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN BEGIN IF INTERACTION=3
THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(859);END;PRINTESC(264);
PRINTINT(N);BEGIN HELPPTR:=3;HELPLINE[2]:=860;HELPLINE[1]:=861;
HELPLINE[0]:=789;END;ERROR;END;END{:1009};
IF MEM[R].HH.B0=1 THEN INSERTPENALT:=INSERTPENALT+MEM[P+1].INT ELSE
BEGIN MEM[R+2].HH.RH:=P;
DELTA:=PAGESOFAR[0]-PAGESOFAR[1]-PAGESOFAR[7]+PAGESOFAR[6];
IF EQTB[4417+N].INT=1000 THEN H:=MEM[P+3].INT ELSE H:=XOVERN(MEM[P+3].
INT,1000)*EQTB[4417+N].INT;
IF((H<=0)OR(H<=DELTA))AND(MEM[P+3].INT+MEM[R+3].INT<=EQTB[4821+N].INT)
THEN BEGIN PAGESOFAR[0]:=PAGESOFAR[0]-H;
MEM[R+3].INT:=MEM[R+3].INT+MEM[P+3].INT;END ELSE{1010:}
BEGIN IF EQTB[4417+N].INT<=0 THEN W:=1073741823 ELSE BEGIN W:=PAGESOFAR[
0]-PAGESOFAR[1]-PAGESOFAR[7];
IF EQTB[4417+N].INT<>1000 THEN W:=XOVERN(W,EQTB[4417+N].INT)*1000;END;
IF W>EQTB[4821+N].INT-MEM[R+3].INT THEN W:=EQTB[4821+N].INT-MEM[R+3].INT
;Q:=VERTBREAK(MEM[P+4].HH.LH,W,MEM[P+2].INT);
MEM[R+3].INT:=MEM[R+3].INT+BESTHEIGHTPL;IF EQTB[4400].INT>0 THEN{1011:}
BEGIN BEGINDIAGNOS;PRINTNL(862);PRINTINT(N);PRINT(863);PRINTSCALED(W);
PRINTCHAR(44);PRINTSCALED(BESTHEIGHTPL);PRINT(798);
IF Q=0 THEN PRINTINT(-10000)ELSE IF MEM[Q].HH.B0=12 THEN PRINTINT(MEM[Q
+1].INT)ELSE PRINTCHAR(48);ENDDIAGNOSTI(FALSE);END{:1011};
IF EQTB[4417+N].INT<>1000 THEN BESTHEIGHTPL:=XOVERN(BESTHEIGHTPL,1000)*
EQTB[4417+N].INT;PAGESOFAR[0]:=PAGESOFAR[0]-BESTHEIGHTPL;
MEM[R].HH.B0:=1;MEM[R+1].HH.RH:=Q;MEM[R+1].HH.LH:=P;
IF Q=0 THEN INSERTPENALT:=INSERTPENALT-10000 ELSE IF MEM[Q].HH.B0=12
THEN INSERTPENALT:=INSERTPENALT+MEM[Q+1].INT;END{:1010};END;GOTO 80;
END{:1008};OTHERS:CONFUSION(854)END{:1000};{1005:}
IF PI<10000 THEN BEGIN{1007:}
IF PAGESOFAR[1]<PAGESOFAR[0]THEN IF(PAGESOFAR[3]<>0)OR(PAGESOFAR[4]<>0)
OR(PAGESOFAR[5]<>0)THEN B:=0 ELSE B:=BADNESS(PAGESOFAR[0]-PAGESOFAR[1],
PAGESOFAR[2])ELSE IF PAGESOFAR[1]-PAGESOFAR[0]>PAGESOFAR[6]THEN B:=
1073741823 ELSE B:=BADNESS(PAGESOFAR[1]-PAGESOFAR[0],PAGESOFAR[6]){:1007
};
IF B<1073741823 THEN IF PI<=-10000 THEN C:=PI ELSE IF B<10000 THEN C:=B+
PI+INSERTPENALT ELSE C:=100000 ELSE C:=B;
IF INSERTPENALT>=10000 THEN C:=1073741823;
IF EQTB[4400].INT>0 THEN{1006:}BEGIN BEGINDIAGNOS;PRINTNL(37);
PRINT(794);PRINTTOTALS;PRINT(857);PRINTSCALED(PAGESOFAR[0]);PRINT(797);
IF B=1073741823 THEN PRINTCHAR(42)ELSE PRINTINT(B);PRINT(798);
PRINTINT(PI);PRINT(858);
IF C=1073741823 THEN PRINTCHAR(42)ELSE PRINTINT(C);
IF C<=LEASTPAGECOS THEN PRINTCHAR(35);ENDDIAGNOSTI(FALSE);END{:1006};
IF C<=LEASTPAGECOS THEN BEGIN BESTPAGEBREA:=P;BESTSIZE:=PAGESOFAR[0];
LEASTPAGECOS:=C;R:=MEM[3000].HH.RH;
WHILE R<>3000 DO BEGIN MEM[R+2].HH.LH:=MEM[R+2].HH.RH;R:=MEM[R].HH.RH;
END;END;IF(C=1073741823)OR(PI<=-10000)THEN BEGIN FIREUP(P);
IF OUTPUTACTIVE THEN GOTO 10;GOTO 30;END;END{:1005};
IF(MEM[P].HH.B0<10)OR(MEM[P].HH.B0>11)THEN GOTO 80;90:{1004:}
IF MEM[P].HH.B0=11 THEN Q:=P ELSE BEGIN Q:=MEM[P+1].HH.LH;
PAGESOFAR[2+MEM[Q].HH.B0]:=PAGESOFAR[2+MEM[Q].HH.B0]+MEM[Q+2].INT;
PAGESOFAR[6]:=PAGESOFAR[6]+MEM[Q+3].INT;
IF(MEM[Q].HH.B1<>0)AND(MEM[Q+3].INT<>0)THEN BEGIN BEGIN IF INTERACTION=3
THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(855);END;
BEGIN HELPPTR:=4;HELPLINE[3]:=856;HELPLINE[2]:=824;HELPLINE[1]:=825;
HELPLINE[0]:=789;END;ERROR;R:=NEWSPEC(Q);MEM[R].HH.B1:=0;
DELETEGLUERE(Q);MEM[P+1].HH.LH:=R;END;END;
PAGESOFAR[1]:=PAGESOFAR[1]+PAGESOFAR[7]+MEM[Q+1].INT;
PAGESOFAR[7]:=0{:1004};80:{1003:}
IF PAGESOFAR[7]>PAGEMAXDEPTH THEN BEGIN PAGESOFAR[1]:=PAGESOFAR[1]+
PAGESOFAR[7]-PAGEMAXDEPTH;PAGESOFAR[7]:=PAGEMAXDEPTH;END;{:1003};{998:}
MEM[PAGETAIL].HH.RH:=P;PAGETAIL:=P;MEM[2999].HH.RH:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;GOTO 30{:998};31:{999:}MEM[2999].HH.RH:=MEM[P].HH.RH;
MEM[P].HH.RH:=0;FLUSHNODELIS(P){:999};30:{:997};UNTIL MEM[2999].HH.RH=0;
{995:}
IF NESTPTR=0 THEN CURLIST.TAILFIELD:=2999 ELSE NEST[0].TAILFIELD:=2999{:
995};10:END;{:994}{1030:}{1043:}PROCEDURE APPSPACE;VAR P:HALFWORD;
Q:HALFWORD;F:INTERNALFONT;K:0..FONTMEMSIZE;
BEGIN IF(CURLIST.AUXFIELD>=2000)AND(EQTB[2639].HH.RH<>1)THEN Q:=
NEWPARAMGLUE(13)ELSE BEGIN IF EQTB[2638].HH.RH<>1 THEN P:=EQTB[2638].HH.
RH ELSE{1042:}BEGIN P:=FONTGLUE[EQTB[3678].HH.RH];
IF P=0 THEN BEGIN F:=EQTB[3678].HH.RH;P:=NEWSPEC(1);K:=PARAMBASE[F]+2;
MEM[P+1].INT:=FONTINFO[K].INT;MEM[P+2].INT:=FONTINFO[K+1].INT;
MEM[P+3].INT:=FONTINFO[K+2].INT;FONTGLUE[F]:=P;END;END{:1042};
P:=NEWSPEC(P);{1044:}
IF CURLIST.AUXFIELD>=2000 THEN MEM[P+1].INT:=MEM[P+1].INT+FONTINFO[7+
PARAMBASE[EQTB[3678].HH.RH]].INT;
MEM[P+2].INT:=XNOVERD(MEM[P+2].INT,CURLIST.AUXFIELD,1000);
MEM[P+3].INT:=XNOVERD(MEM[P+3].INT,1000,CURLIST.AUXFIELD){:1044};
Q:=NEWGLUE(P);MEM[P].HH.RH:=0;END;MEM[CURLIST.TAILFIELD].HH.RH:=Q;
CURLIST.TAILFIELD:=Q;END;{:1043}{1047:}PROCEDURE INSERTDOLLAR;
BEGIN BACKINPUT;CURTOK:=804;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(878);END;BEGIN HELPPTR:=2;HELPLINE[1]:=879;HELPLINE[0]:=880;END;
INSERROR;END;{:1047}{1049:}PROCEDURE YOUCANT;
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(549);END;PRINTCMDCHR(CURCMD,CURCHR);PRINT(881);
PRINTMODE(CURLIST.MODEFIELD);END;{:1049}{1050:}PROCEDURE REPORTILLEGA;
BEGIN YOUCANT;BEGIN HELPPTR:=4;HELPLINE[3]:=882;HELPLINE[2]:=883;
HELPLINE[1]:=884;HELPLINE[0]:=885;END;ERROR;END;{:1050}{1051:}
FUNCTION PRIVILEGED:BOOLEAN;
BEGIN IF CURLIST.MODEFIELD>0 THEN PRIVILEGED:=TRUE ELSE BEGIN
REPORTILLEGA;PRIVILEGED:=FALSE;END;END;{:1051}{1054:}
FUNCTION ITSALLOVER:BOOLEAN;LABEL 10;
BEGIN IF PRIVILEGED THEN BEGIN IF(2998=PAGETAIL)AND(CURLIST.HEADFIELD=
CURLIST.TAILFIELD)AND(DEADCYCLES=0)THEN BEGIN ITSALLOVER:=TRUE;GOTO 10;
END;BACKINPUT;BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNULLBOX;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4804].INT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(9);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(-1073741824);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;BUILDPAGE;END;
ITSALLOVER:=FALSE;10:END;{:1054}{1060:}PROCEDURE APPENDGLUE;
VAR S:SMALLNUMBER;BEGIN S:=CURCHR;CASE S OF 0:CURVAL:=5;1:CURVAL:=9;
2:CURVAL:=13;3:CURVAL:=17;4:SCANGLUE(2);5:SCANGLUE(3);END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF S>=4 THEN BEGIN MEM[CURVAL].HH.RH:=MEM[CURVAL].HH.RH-1;
IF S>4 THEN MEM[CURLIST.TAILFIELD].HH.B1:=99;END;END;{:1060}{1061:}
PROCEDURE APPENDKERN;VAR S:QUARTERWORD;BEGIN S:=CURCHR;
SCANDIMEN(S=99,FALSE,FALSE);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=S;END;{:1061}{1064:}PROCEDURE OFFSAVE;
VAR P:HALFWORD;BEGIN IF CURGROUP=0 THEN{1066:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(643);END;PRINTCMDCHR(CURCMD,CURCHR);BEGIN HELPPTR:=1;
HELPLINE[0]:=904;END;ERROR;END{:1066}ELSE BEGIN BACKINPUT;P:=GETAVAIL;
MEM[2997].HH.RH:=P;BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(490);END;{1065:}
CASE CURGROUP OF 14:BEGIN MEM[P].HH.LH:=6456;PRINTESC(379);END;
15:BEGIN MEM[P].HH.LH:=804;PRINTCHAR(36);END;
16:BEGIN MEM[P].HH.LH:=6457;MEM[P].HH.RH:=GETAVAIL;P:=MEM[P].HH.RH;
MEM[P].HH.LH:=3118;PRINTESC(903);END;OTHERS:BEGIN MEM[P].HH.LH:=637;
PRINTCHAR(125);END END{:1065};PRINT(491);
BEGINTOKENLI(MEM[2997].HH.RH,4);BEGIN HELPPTR:=5;HELPLINE[4]:=898;
HELPLINE[3]:=899;HELPLINE[2]:=900;HELPLINE[1]:=901;HELPLINE[0]:=902;END;
ERROR;END;END;{:1064}{1069:}PROCEDURE EXTRARIGHTBR;
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(909);END;CASE CURGROUP OF 14:PRINTESC(379);15:PRINTCHAR(36);
16:PRINTESC(743);END;BEGIN HELPPTR:=5;HELPLINE[4]:=910;HELPLINE[3]:=911;
HELPLINE[2]:=912;HELPLINE[1]:=913;HELPLINE[0]:=914;END;ERROR;
ALIGNSTATE:=ALIGNSTATE+1;END;{:1069}{1070:}PROCEDURE NORMALPARAGR;
BEGIN IF EQTB[4386].INT<>0 THEN EQWORDDEFINE(4386,0);
IF EQTB[4818].INT<>0 THEN EQWORDDEFINE(4818,0);
IF EQTB[4408].INT<>1 THEN EQWORDDEFINE(4408,1);
IF EQTB[3156].HH.RH<>0 THEN EQDEFINE(3156,117,0);END;{:1070}{1075:}
PROCEDURE BOXEND;VAR P:HALFWORD;
BEGIN IF SAVESTACK[SAVEPTR+0].INT<1073741824 THEN{1076:}
BEGIN IF CURBOX<>0 THEN BEGIN MEM[CURBOX+4].INT:=SAVESTACK[SAVEPTR+0].
INT;IF ABS(CURLIST.MODEFIELD)=1 THEN BEGIN APPENDTOVLIS(CURBOX);
IF ADJUSTTAIL<>0 THEN BEGIN IF 2995<>ADJUSTTAIL THEN BEGIN MEM[CURLIST.
TAILFIELD].HH.RH:=MEM[2995].HH.RH;CURLIST.TAILFIELD:=ADJUSTTAIL;END;
ADJUSTTAIL:=0;END;IF CURLIST.MODEFIELD>0 THEN BUILDPAGE;
END ELSE BEGIN IF ABS(CURLIST.MODEFIELD)=101 THEN CURLIST.AUXFIELD:=1000
ELSE BEGIN P:=NEWNOAD;MEM[P+1].HH.RH:=2;MEM[P+1].HH.LH:=CURBOX;
CURBOX:=P;END;MEM[CURLIST.TAILFIELD].HH.RH:=CURBOX;
CURLIST.TAILFIELD:=CURBOX;END;END;END{:1076}
ELSE IF SAVESTACK[SAVEPTR+0].INT<1073742336 THEN{1077:}
IF SAVESTACK[SAVEPTR+0].INT<1073742080 THEN EQDEFINE(-1073738402+
SAVESTACK[SAVEPTR+0].INT,118,CURBOX)ELSE GEQDEFINE(-1073738658+SAVESTACK
[SAVEPTR+0].INT,118,CURBOX){:1077}
ELSE IF CURBOX<>0 THEN IF SAVESTACK[SAVEPTR+0].INT>1073742336 THEN{1078:
}BEGIN{404:}REPEAT GETXTOKEN;UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
IF((CURCMD=26)AND(ABS(CURLIST.MODEFIELD)<>1))OR((CURCMD=27)AND(ABS(
CURLIST.MODEFIELD)=1))OR((CURCMD=28)AND(ABS(CURLIST.MODEFIELD)=201))THEN
BEGIN APPENDGLUE;
MEM[CURLIST.TAILFIELD].HH.B1:=SAVESTACK[SAVEPTR+0].INT-(1073742237);
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURBOX;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(927);END;BEGIN HELPPTR:=3;HELPLINE[2]:=928;
HELPLINE[1]:=929;HELPLINE[0]:=930;END;BACKERROR;FLUSHNODELIS(CURBOX);
END;END{:1078}ELSE SHIPOUT(CURBOX);END;{:1075}{1079:}PROCEDURE BEGINBOX;
LABEL 10,30;VAR P,Q:HALFWORD;M:QUARTERWORD;K:HALFWORD;N:EIGHTBITS;
BEGIN CASE CURCHR OF 0:BEGIN SCANEIGHTBIT;
CURBOX:=EQTB[3422+CURVAL].HH.RH;EQTB[3422+CURVAL].HH.RH:=0;END;
1:BEGIN SCANEIGHTBIT;CURBOX:=COPYNODELIST(EQTB[3422+CURVAL].HH.RH);END;
2:{1080:}BEGIN CURBOX:=0;
IF ABS(CURLIST.MODEFIELD)=201 THEN BEGIN YOUCANT;BEGIN HELPPTR:=1;
HELPLINE[0]:=931;END;ERROR;
END ELSE IF(CURLIST.MODEFIELD=1)AND(CURLIST.HEADFIELD=CURLIST.TAILFIELD)
THEN BEGIN YOUCANT;BEGIN HELPPTR:=2;HELPLINE[1]:=932;HELPLINE[0]:=933;
END;ERROR;
END ELSE BEGIN IF NOT(CURLIST.TAILFIELD>=HIMEMMIN)THEN IF(MEM[CURLIST.
TAILFIELD].HH.B0=0)OR(MEM[CURLIST.TAILFIELD].HH.B0=1)THEN{1081:}
BEGIN Q:=CURLIST.HEADFIELD;REPEAT P:=Q;
IF NOT(Q>=HIMEMMIN)THEN IF MEM[Q].HH.B0=7 THEN BEGIN FOR M:=1 TO MEM[Q].
HH.B1 DO P:=MEM[P].HH.RH;IF P=CURLIST.TAILFIELD THEN GOTO 30;END;
Q:=MEM[P].HH.RH;UNTIL Q=CURLIST.TAILFIELD;CURBOX:=CURLIST.TAILFIELD;
MEM[CURBOX+4].INT:=0;CURLIST.TAILFIELD:=P;MEM[P].HH.RH:=0;30:END{:1081};
END;END{:1080};3:{1082:}BEGIN SCANEIGHTBIT;N:=CURVAL;
IF NOT SCANKEYWORD(708)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(934);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=935;HELPLINE[0]:=936;END;ERROR;END;
SCANDIMEN(FALSE,FALSE,FALSE);CURBOX:=VSPLIT(N,CURVAL);END{:1082};
OTHERS:{1083:}BEGIN K:=CURCHR-4;SAVEPTR:=SAVEPTR+1;SCANSPEC;
IF K=101 THEN IF(SAVESTACK[SAVEPTR-3].INT<1073741824)AND(ABS(CURLIST.
MODEFIELD)=1)THEN NEWSAVELEVEL(3)ELSE NEWSAVELEVEL(2)ELSE BEGIN IF K=1
THEN NEWSAVELEVEL(4)ELSE BEGIN NEWSAVELEVEL(5);K:=1;END;NORMALPARAGR;
END;PUSHNEST;CURLIST.MODEFIELD:=-K;
IF K=1 THEN BEGIN CURLIST.AUXFIELD:=-65536000;
IF EQTB[3162].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3162].HH.RH,11);
END ELSE BEGIN CURLIST.AUXFIELD:=1000;
IF EQTB[3161].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3161].HH.RH,10);END;
GOTO 10;END{:1083}END;BOXEND;10:END;{:1079}{1084:}PROCEDURE SCANBOX;
BEGIN{404:}REPEAT GETXTOKEN;UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
IF CURCMD=20 THEN BEGINBOX ELSE IF(SAVESTACK[SAVEPTR+0].INT>=1073742337)
AND((CURCMD=36)OR(CURCMD=35))THEN BEGIN CURBOX:=SCANRULESPEC;BOXEND;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(937);END;BEGIN HELPPTR:=3;HELPLINE[2]:=938;
HELPLINE[1]:=939;HELPLINE[0]:=940;END;BACKERROR;END;END;{:1084}{1086:}
PROCEDURE PACKAGE(C:SMALLNUMBER);VAR H:SCALED;P:HALFWORD;D:SCALED;
BEGIN D:=EQTB[4808].INT;UNSAVE;SAVEPTR:=SAVEPTR-3;
IF CURLIST.MODEFIELD=-101 THEN CURBOX:=HPACK(MEM[CURLIST.HEADFIELD].HH.
RH,SAVESTACK[SAVEPTR+2].INT,SAVESTACK[SAVEPTR+1].INT)ELSE BEGIN CURBOX:=
VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+2].INT,SAVESTACK
[SAVEPTR+1].INT,D);IF C=4 THEN{1087:}BEGIN H:=0;P:=MEM[CURBOX+5].HH.RH;
IF P<>0 THEN IF MEM[P].HH.B0<=2 THEN H:=MEM[P+3].INT;
MEM[CURBOX+2].INT:=MEM[CURBOX+2].INT-H+MEM[CURBOX+3].INT;
MEM[CURBOX+3].INT:=H;END{:1087};END;POPNEST;BOXEND;END;{:1086}{1091:}
PROCEDURE NEWGRAF(INDENTED:BOOLEAN);BEGIN CURLIST.PGFIELD:=0;
IF(CURLIST.MODEFIELD=1)OR(CURLIST.HEADFIELD<>CURLIST.TAILFIELD)THEN
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;PUSHNEST;
CURLIST.MODEFIELD:=101;CURLIST.AUXFIELD:=1000;
IF INDENTED THEN BEGIN CURLIST.TAILFIELD:=NEWNULLBOX;
MEM[CURLIST.HEADFIELD].HH.RH:=CURLIST.TAILFIELD;
MEM[CURLIST.TAILFIELD+1].INT:=EQTB[4801].INT;END;
IF EQTB[3158].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3158].HH.RH,7);
IF NESTPTR=1 THEN BUILDPAGE;END;{:1091}{1093:}PROCEDURE INDENTINHMOD;
VAR P,Q:HALFWORD;BEGIN IF CURCHR>0 THEN BEGIN P:=NEWNULLBOX;
MEM[P+1].INT:=EQTB[4801].INT;
IF ABS(CURLIST.MODEFIELD)=101 THEN CURLIST.AUXFIELD:=1000 ELSE BEGIN Q:=
NEWNOAD;MEM[Q+1].HH.RH:=2;MEM[Q+1].HH.LH:=P;P:=Q;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END;END;{:1093}
{1095:}PROCEDURE HEADFORVMODE;
BEGIN IF CURLIST.MODEFIELD<0 THEN IF CURCMD<>36 THEN OFFSAVE ELSE BEGIN
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(549);END;PRINTESC(384);PRINT(943);BEGIN HELPPTR:=2;
HELPLINE[1]:=944;HELPLINE[0]:=945;END;ERROR;END ELSE BEGIN BACKINPUT;
CURTOK:=PARTOKEN;BACKINPUT;CURINPUT.INDEXFIELD:=4;END;END;{:1095}{1096:}
PROCEDURE ENDGRAF;
BEGIN IF CURLIST.MODEFIELD=101 THEN BEGIN IF CURLIST.HEADFIELD=CURLIST.
TAILFIELD THEN POPNEST ELSE LINEBREAK(EQTB[4373].INT);NORMALPARAGR;
ERRORCOUNT:=0;END;END;{:1096}{1099:}PROCEDURE BEGININSERTO;
BEGIN IF CURCMD=38 THEN CURVAL:=255 ELSE BEGIN SCANEIGHTBIT;
IF CURVAL=255 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(946);END;PRINTESC(202);PRINTINT(255);
BEGIN HELPPTR:=1;HELPLINE[0]:=947;END;ERROR;CURVAL:=0;END;END;
SAVESTACK[SAVEPTR+0].INT:=CURVAL;SAVEPTR:=SAVEPTR+1;NEWSAVELEVEL(11);
SCANLEFTBRAC;NORMALPARAGR;PUSHNEST;CURLIST.MODEFIELD:=-1;
CURLIST.AUXFIELD:=-65536000;END;{:1099}{1101:}PROCEDURE MAKEMARK;
VAR P:HALFWORD;BEGIN P:=SCANTOKS(FALSE,TRUE);P:=GETNODE(2);
MEM[P].HH.B0:=4;MEM[P].HH.B1:=0;MEM[P+1].INT:=DEFREF;
MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;END;{:1101}{1103:}
PROCEDURE APPENDPENALT;BEGIN SCANINT;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(CURVAL);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;{:1103}{1105:}
PROCEDURE DELETELAST;LABEL 10;VAR P,Q:HALFWORD;M:QUARTERWORD;
BEGIN IF(CURLIST.MODEFIELD=1)AND(CURLIST.TAILFIELD=CURLIST.HEADFIELD)
THEN{1106:}BEGIN IF(CURCHR<>10)OR(LASTGLUE<>32768)THEN BEGIN YOUCANT;
BEGIN HELPPTR:=2;HELPLINE[1]:=932;HELPLINE[0]:=948;END;
IF CURCHR=11 THEN HELPLINE[0]:=(949)ELSE IF CURCHR<>10 THEN HELPLINE[0]
:=(950);ERROR;END;END{:1106}
ELSE BEGIN IF NOT(CURLIST.TAILFIELD>=HIMEMMIN)THEN IF MEM[CURLIST.
TAILFIELD].HH.B0=CURCHR THEN BEGIN Q:=CURLIST.HEADFIELD;REPEAT P:=Q;
IF NOT(Q>=HIMEMMIN)THEN IF MEM[Q].HH.B0=7 THEN BEGIN FOR M:=1 TO MEM[Q].
HH.B1 DO P:=MEM[P].HH.RH;IF P=CURLIST.TAILFIELD THEN GOTO 10;END;
Q:=MEM[P].HH.RH;UNTIL Q=CURLIST.TAILFIELD;MEM[P].HH.RH:=0;
FLUSHNODELIS(CURLIST.TAILFIELD);CURLIST.TAILFIELD:=P;END;END;10:END;
{:1105}{1110:}PROCEDURE UNPACKAGE;LABEL 10;VAR P:HALFWORD;C:0..1;
BEGIN C:=CURCHR;SCANEIGHTBIT;P:=EQTB[3422+CURVAL].HH.RH;
IF P=0 THEN GOTO 10;
IF(ABS(CURLIST.MODEFIELD)=201)OR((ABS(CURLIST.MODEFIELD)=1)AND(MEM[P].HH
.B0<>1))OR((ABS(CURLIST.MODEFIELD)=101)AND(MEM[P].HH.B0<>0))THEN BEGIN
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(958);END;BEGIN HELPPTR:=3;HELPLINE[2]:=959;HELPLINE[1]:=960;
HELPLINE[0]:=961;END;ERROR;GOTO 10;END;
IF C=1 THEN MEM[CURLIST.TAILFIELD].HH.RH:=COPYNODELIST(MEM[P+5].HH.RH)
ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[P+5].HH.RH;
EQTB[3422+CURVAL].HH.RH:=0;FREENODE(P,7);END;
WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
TAILFIELD].HH.RH;10:END;{:1110}{1113:}PROCEDURE APPENDITALIC;LABEL 10;
VAR P:HALFWORD;F:INTERNALFONT;
BEGIN IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN BEGIN IF(CURLIST.
TAILFIELD>=HIMEMMIN)THEN P:=CURLIST.TAILFIELD ELSE IF MEM[CURLIST.
TAILFIELD].HH.B0=6 THEN P:=CURLIST.TAILFIELD+1 ELSE GOTO 10;
F:=MEM[P].HH.B0;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[ITALICBASE[F]+(0+
FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B2-0)DIV 4].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=1;END;10:END;{:1113}{1117:}
PROCEDURE APPENDDISCRE;VAR C:INTEGER;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF CURCHR=1 THEN BEGIN C:=HYPHENCHAR[EQTB[3678].HH.RH];
IF C>=0 THEN IF C<256 THEN MEM[CURLIST.TAILFIELD+1].HH.LH:=NEWCHARACTER(
EQTB[3678].HH.RH,C);END ELSE BEGIN SAVEPTR:=SAVEPTR+1;
SAVESTACK[SAVEPTR-1].INT:=0;SCANLEFTBRAC;NEWSAVELEVEL(10);PUSHNEST;
CURLIST.MODEFIELD:=-101;CURLIST.AUXFIELD:=1000;END;END;{:1117}{1119:}
PROCEDURE BUILDDISCRET;LABEL 30,10;VAR P,Q:HALFWORD;N:INTEGER;
BEGIN UNSAVE;{1121:}Q:=CURLIST.HEADFIELD;P:=MEM[Q].HH.RH;N:=0;
WHILE P<>0 DO BEGIN IF NOT(P>=HIMEMMIN)THEN IF MEM[P].HH.B0>2 THEN IF
MEM[P].HH.B0<>11 THEN IF MEM[P].HH.B0<>6 THEN BEGIN BEGIN IF INTERACTION
=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(968);END;
BEGIN HELPPTR:=1;HELPLINE[0]:=969;END;ERROR;BEGINDIAGNOS;PRINTNL(970);
SHOWBOX(P);ENDDIAGNOSTI(TRUE);FLUSHNODELIS(P);MEM[Q].HH.RH:=0;GOTO 30;
END;Q:=P;P:=MEM[Q].HH.RH;N:=N+1;END;30:{:1121};
P:=MEM[CURLIST.HEADFIELD].HH.RH;POPNEST;
CASE SAVESTACK[SAVEPTR-1].INT OF 0:MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
1:MEM[CURLIST.TAILFIELD+1].HH.RH:=P;2:{1120:}
BEGIN IF(N>0)AND(ABS(CURLIST.MODEFIELD)=201)THEN BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(962);END;
PRINTESC(221);BEGIN HELPPTR:=2;HELPLINE[1]:=963;HELPLINE[0]:=964;END;
FLUSHNODELIS(P);N:=0;ERROR;END ELSE MEM[CURLIST.TAILFIELD].HH.RH:=P;
IF N<=255 THEN MEM[CURLIST.TAILFIELD].HH.B1:=N ELSE BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(965);END;
BEGIN HELPPTR:=2;HELPLINE[1]:=966;HELPLINE[0]:=967;END;ERROR;END;
IF N>0 THEN CURLIST.TAILFIELD:=Q;SAVEPTR:=SAVEPTR-1;GOTO 10;END{:1120};
END;SAVESTACK[SAVEPTR-1].INT:=SAVESTACK[SAVEPTR-1].INT+1;SCANLEFTBRAC;
NEWSAVELEVEL(10);PUSHNEST;CURLIST.MODEFIELD:=-101;
CURLIST.AUXFIELD:=1000;10:END;{:1119}{1123:}PROCEDURE MAKEACCENT;
VAR S,T:REAL;P,Q,R:HALFWORD;F:INTERNALFONT;A,H,X,W,DELTA:SCALED;
I:FOURQUARTERS;BEGIN SCANCHARNUM;F:=EQTB[3678].HH.RH;
P:=NEWCHARACTER(F,CURVAL);
IF P<>0 THEN BEGIN X:=FONTINFO[5+PARAMBASE[F]].INT;
S:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
A:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
;DOASSIGNMENT;{1124:}Q:=0;F:=EQTB[3678].HH.RH;
IF(CURCMD=11)OR(CURCMD=12)OR(CURCMD=67)THEN Q:=NEWCHARACTER(F,CURCHR)
ELSE IF CURCMD=16 THEN BEGIN SCANCHARNUM;Q:=NEWCHARACTER(F,CURVAL);
END ELSE BACKINPUT{:1124};IF Q<>0 THEN{1125:}
BEGIN T:=FONTINFO[1+PARAMBASE[F]].INT/65536.0;
I:=FONTINFO[CHARBASE[F]+MEM[Q].HH.B1].QQQQ;
W:=FONTINFO[WIDTHBASE[F]+I.B0].INT;
H:=FONTINFO[HEIGHTBASE[F]+(0+I.B1-0)DIV 16].INT;
IF H<>X THEN BEGIN P:=HPACK(P,0,1);MEM[P+4].INT:=X-H;END;
DELTA:=ROUND((W-A)/2.0+H*T-X*S);R:=NEWKERN(DELTA);MEM[R].HH.B1:=2;
MEM[CURLIST.TAILFIELD].HH.RH:=R;MEM[R].HH.RH:=P;
CURLIST.TAILFIELD:=NEWKERN(-A-DELTA);MEM[CURLIST.TAILFIELD].HH.B1:=2;
MEM[P].HH.RH:=CURLIST.TAILFIELD;P:=Q;END{:1125};
MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
CURLIST.AUXFIELD:=1000;END;END;{:1123}{1127:}PROCEDURE ALIGNERROR;
BEGIN IF ABS(ALIGNSTATE)>2 THEN{1128:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(975);END;PRINTCMDCHR(CURCMD,CURCHR);
IF CURTOK=1062 THEN BEGIN BEGIN HELPPTR:=6;HELPLINE[5]:=976;
HELPLINE[4]:=977;HELPLINE[3]:=978;HELPLINE[2]:=979;HELPLINE[1]:=980;
HELPLINE[0]:=981;END;END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=976;
HELPLINE[3]:=982;HELPLINE[2]:=979;HELPLINE[1]:=980;HELPLINE[0]:=981;END;
END;ERROR;END{:1128}ELSE BEGIN BACKINPUT;
IF ALIGNSTATE<0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(522);END;ALIGNSTATE:=ALIGNSTATE+1;
CURTOK:=379;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(971);END;ALIGNSTATE:=ALIGNSTATE-1;CURTOK:=637;END;
BEGIN HELPPTR:=3;HELPLINE[2]:=972;HELPLINE[1]:=973;HELPLINE[0]:=974;END;
INSERROR;END;END;{:1127}{1129:}PROCEDURE NOALIGNERROR;
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(975);END;PRINTESC(390);BEGIN HELPPTR:=2;HELPLINE[1]:=983;
HELPLINE[0]:=984;END;ERROR;END;PROCEDURE OMITERROR;
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(975);END;PRINTESC(392);BEGIN HELPPTR:=2;HELPLINE[1]:=985;
HELPLINE[0]:=984;END;ERROR;END;{:1129}{1131:}PROCEDURE DOENDV;
BEGIN IF CURGROUP=6 THEN BEGIN ENDGRAF;IF FINCOL THEN FINROW;
END ELSE OFFSAVE;END;{:1131}{1135:}PROCEDURE CSERROR;
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(643);END;PRINTESC(368);BEGIN HELPPTR:=1;HELPLINE[0]:=987;END;
ERROR;END;{:1135}{1136:}PROCEDURE PUSHMATH(C:GROUPCODE);BEGIN PUSHNEST;
CURLIST.MODEFIELD:=-201;CURLIST.AUXFIELD:=0;NEWSAVELEVEL(C);END;{:1136}
{1138:}PROCEDURE INITMATH;LABEL 21,40,45,30;VAR W:SCALED;L:SCALED;
S:SCALED;P:HALFWORD;Q:HALFWORD;F:INTERNALFONT;N:INTEGER;V:SCALED;
D:SCALED;BEGIN GETTOKEN;IF(CURCMD=3)AND(CURLIST.MODEFIELD>0)THEN{1145:}
BEGIN IF CURLIST.HEADFIELD=CURLIST.TAILFIELD THEN BEGIN POPNEST;
W:=-1073741823;END ELSE BEGIN LINEBREAK(EQTB[4374].INT);{1146:}
V:=MEM[JUSTBOX+4].INT+2*FONTINFO[6+PARAMBASE[EQTB[3678].HH.RH]].INT;
W:=-1073741823;P:=MEM[JUSTBOX+5].HH.RH;WHILE P<>0 DO BEGIN{1147:}
21:IF(P>=HIMEMMIN)THEN BEGIN F:=MEM[P].HH.B0;
D:=FONTINFO[WIDTHBASE[F]+FONTINFO[CHARBASE[F]+MEM[P].HH.B1].QQQQ.B0].INT
;GOTO 40;END;CASE MEM[P].HH.B0 OF 0,1,2:BEGIN D:=MEM[P+1].INT;GOTO 40;
END;6:{652:}BEGIN MEM[2988]:=MEM[P+1];MEM[2988].HH.RH:=MEM[P].HH.RH;
P:=2988;GOTO 21;END{:652};11,9:D:=MEM[P+1].INT;10:{1148:}
BEGIN Q:=MEM[P+1].HH.LH;D:=MEM[Q+1].INT;
IF MEM[JUSTBOX+5].HH.B0=1 THEN BEGIN IF(MEM[JUSTBOX+5].HH.B1=MEM[Q].HH.
B0)AND(MEM[Q+2].INT<>0)THEN V:=1073741823;
END ELSE IF MEM[JUSTBOX+5].HH.B0=2 THEN BEGIN IF(MEM[JUSTBOX+5].HH.B1=
MEM[Q].HH.B1)AND(MEM[Q+3].INT<>0)THEN V:=1073741823;END;
IF MEM[P].HH.B1>=100 THEN GOTO 40;END{:1148};8:{1361:}D:=0{:1361};
OTHERS:D:=0 END{:1147};IF V<1073741823 THEN V:=V+D;GOTO 45;
40:IF V<1073741823 THEN BEGIN V:=V+D;W:=V;END ELSE BEGIN W:=1073741823;
GOTO 30;END;45:P:=MEM[P].HH.RH;END;30:{:1146};END;{1149:}
IF EQTB[3156].HH.RH=0 THEN IF(EQTB[4818].INT<>0)AND(((EQTB[4408].INT>=0)
AND(CURLIST.PGFIELD+2>EQTB[4408].INT))OR(CURLIST.PGFIELD+1<-EQTB[4408].
INT))THEN BEGIN L:=EQTB[4804].INT-ABS(EQTB[4818].INT);
IF EQTB[4818].INT>0 THEN S:=EQTB[4818].INT ELSE S:=0;
END ELSE BEGIN L:=EQTB[4804].INT;S:=0;
END ELSE BEGIN N:=MEM[EQTB[3156].HH.RH].HH.LH;
IF CURLIST.PGFIELD+2>=N THEN P:=EQTB[3156].HH.RH+2*N ELSE P:=EQTB[3156].
HH.RH+2*(CURLIST.PGFIELD+2);S:=MEM[P-1].INT;L:=MEM[P].INT;END{:1149};
PUSHMATH(15);CURLIST.MODEFIELD:=201;EQWORDDEFINE(4411,-1);
EQWORDDEFINE(4814,W);EQWORDDEFINE(4815,L);EQWORDDEFINE(4816,S);
IF EQTB[3160].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3160].HH.RH,9);
IF NESTPTR=1 THEN BUILDPAGE;END{:1145}ELSE BEGIN BACKINPUT;{1139:}
BEGIN PUSHMATH(15);EQWORDDEFINE(4411,-1);
IF EQTB[3159].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3159].HH.RH,8);END{:1139};
END;END;{:1138}{1142:}PROCEDURE STARTEQNO;
BEGIN SAVESTACK[SAVEPTR+0].INT:=CURCHR;SAVEPTR:=SAVEPTR+1;{1139:}
BEGIN PUSHMATH(15);EQWORDDEFINE(4411,-1);
IF EQTB[3159].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3159].HH.RH,8);END{:1139};
END;{:1142}{1151:}PROCEDURE SCANMATH(P:HALFWORD);LABEL 20,21,10;
VAR C:INTEGER;BEGIN 20:{404:}REPEAT GETXTOKEN;
UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
21:CASE CURCMD OF 11,12,67:IF CURCHR>=128 THEN C:=CURCHR ELSE BEGIN C:=
0+EQTB[4239+CURCHR].HH.RH-0;IF C=32768 THEN BEGIN{1152:}
BEGIN CURCS:=CURCHR+1;CURCMD:=EQTB[CURCS].HH.B0;
CURCHR:=EQTB[CURCS].HH.RH;XTOKEN;BACKINPUT;END{:1152};GOTO 20;END;END;
16:BEGIN SCANCHARNUM;CURCHR:=CURVAL;CURCMD:=67;GOTO 21;END;
17:BEGIN SCANFIFTEENB;C:=CURVAL;END;68:C:=CURCHR;15:BEGIN SCANTWENTYSE;
C:=CURVAL DIV 4096;END;OTHERS:{1153:}BEGIN BACKINPUT;SCANLEFTBRAC;
SAVESTACK[SAVEPTR+0].INT:=P;SAVEPTR:=SAVEPTR+1;PUSHMATH(9);GOTO 10;
END{:1153}END;MEM[P].HH.RH:=1;MEM[P].HH.B1:=0+C MOD 256+0;
IF(C>=28672)AND((EQTB[4411].INT>=0)AND(EQTB[4411].INT<16))THEN MEM[P].HH
.B0:=EQTB[4411].INT ELSE MEM[P].HH.B0:=(C DIV 256)MOD 16;10:END;{:1151}
{1155:}PROCEDURE SETMATHCHAR(C:INTEGER);VAR P:HALFWORD;
BEGIN IF C>=32768 THEN{1152:}BEGIN CURCS:=CURCHR+1;
CURCMD:=EQTB[CURCS].HH.B0;CURCHR:=EQTB[CURCS].HH.RH;XTOKEN;BACKINPUT;
END{:1152}ELSE BEGIN P:=NEWNOAD;MEM[P+1].HH.RH:=1;
MEM[P+1].HH.B1:=0+C MOD 256+0;MEM[P+1].HH.B0:=(C DIV 256)MOD 16;
IF C>=28672 THEN BEGIN IF((EQTB[4411].INT>=0)AND(EQTB[4411].INT<16))THEN
MEM[P+1].HH.B0:=EQTB[4411].INT;MEM[P].HH.B0:=16;
END ELSE MEM[P].HH.B0:=16+(C DIV 4096);MEM[CURLIST.TAILFIELD].HH.RH:=P;
CURLIST.TAILFIELD:=P;END;END;{:1155}{1159:}PROCEDURE MATHLIMITSWI;
LABEL 10;
BEGIN IF CURLIST.HEADFIELD<>CURLIST.TAILFIELD THEN IF MEM[CURLIST.
TAILFIELD].HH.B0=17 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.B1:=CURCHR;
GOTO 10;END;BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(991);END;BEGIN HELPPTR:=1;HELPLINE[0]:=992;END;ERROR;
10:END;{:1159}{1160:}PROCEDURE SCANDELIMITE(P:HALFWORD;R:BOOLEAN);
BEGIN IF R THEN SCANTWENTYSE ELSE BEGIN{404:}REPEAT GETXTOKEN;
UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
CASE CURCMD OF 11,12:CURVAL:=EQTB[4673+CURCHR].INT;15:SCANTWENTYSE;
OTHERS:CURVAL:=-1 END;END;IF CURVAL<0 THEN{1161:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(993);END;BEGIN HELPPTR:=6;HELPLINE[5]:=994;HELPLINE[4]:=995;
HELPLINE[3]:=996;HELPLINE[2]:=997;HELPLINE[1]:=998;HELPLINE[0]:=999;END;
BACKERROR;CURVAL:=0;END{:1161};
MEM[P].QQQQ.B0:=(CURVAL DIV 1048576)MOD 16;
MEM[P].QQQQ.B1:=0+(CURVAL DIV 4096)MOD 256+0;
MEM[P].QQQQ.B2:=(CURVAL DIV 256)MOD 16;
MEM[P].QQQQ.B3:=0+CURVAL MOD 256+0;END;{:1160}{1163:}
PROCEDURE MATHRADICAL;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=24;MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
SCANDELIMITE(CURLIST.TAILFIELD+4,TRUE);SCANMATH(CURLIST.TAILFIELD+1);
END;{:1163}{1165:}PROCEDURE MATHAC;BEGIN IF CURCMD=45 THEN{1166:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(1000);END;PRINTESC(386);PRINT(1001);BEGIN HELPPTR:=2;
HELPLINE[1]:=1002;HELPLINE[0]:=1003;END;ERROR;END{:1166};
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(5);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=28;MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+2].HH:=EMPTYFIELD;
MEM[CURLIST.TAILFIELD+4].HH.RH:=1;SCANFIFTEENB;
MEM[CURLIST.TAILFIELD+4].HH.B1:=0+CURVAL MOD 256+0;
IF(CURVAL>=28672)AND((EQTB[4411].INT>=0)AND(EQTB[4411].INT<16))THEN MEM[
CURLIST.TAILFIELD+4].HH.B0:=EQTB[4411].INT ELSE MEM[CURLIST.TAILFIELD+4]
.HH.B0:=(CURVAL DIV 256)MOD 16;SCANMATH(CURLIST.TAILFIELD+1);END;{:1165}
{1172:}PROCEDURE APPENDCHOICE;
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWCHOICE;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;SAVEPTR:=SAVEPTR+1;
SAVESTACK[SAVEPTR-1].INT:=0;SCANLEFTBRAC;PUSHMATH(13);END;{:1172}{1174:}
{1184:}FUNCTION FINMLIST(P:HALFWORD):HALFWORD;VAR Q:HALFWORD;
BEGIN IF CURLIST.AUXFIELD<>0 THEN{1185:}
BEGIN MEM[CURLIST.AUXFIELD+3].HH.RH:=3;
MEM[CURLIST.AUXFIELD+3].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
IF P=0 THEN Q:=CURLIST.AUXFIELD ELSE BEGIN Q:=MEM[CURLIST.AUXFIELD+2].HH
.LH;IF MEM[Q].HH.B0<>30 THEN CONFUSION(743);
MEM[CURLIST.AUXFIELD+2].HH.LH:=MEM[Q].HH.RH;
MEM[Q].HH.RH:=CURLIST.AUXFIELD;MEM[CURLIST.AUXFIELD].HH.RH:=P;END;
END{:1185}ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=P;
Q:=MEM[CURLIST.HEADFIELD].HH.RH;END;POPNEST;FINMLIST:=Q;END;{:1184}
PROCEDURE BUILDCHOICES;LABEL 10;VAR P:HALFWORD;BEGIN UNSAVE;
P:=FINMLIST(0);
CASE SAVESTACK[SAVEPTR-1].INT OF 0:MEM[CURLIST.TAILFIELD+1].HH.LH:=P;
1:MEM[CURLIST.TAILFIELD+1].HH.RH:=P;2:MEM[CURLIST.TAILFIELD+2].HH.LH:=P;
3:BEGIN MEM[CURLIST.TAILFIELD+2].HH.RH:=P;SAVEPTR:=SAVEPTR-1;GOTO 10;
END;END;SAVESTACK[SAVEPTR-1].INT:=SAVESTACK[SAVEPTR-1].INT+1;
SCANLEFTBRAC;PUSHMATH(13);10:END;{:1174}{1176:}PROCEDURE SUBSUP;
VAR T:SMALLNUMBER;P:HALFWORD;BEGIN T:=0;P:=0;
IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN IF(MEM[CURLIST.TAILFIELD].
HH.B0>=16)AND(MEM[CURLIST.TAILFIELD].HH.B0<30)THEN BEGIN P:=CURLIST.
TAILFIELD+2+CURCMD-7;T:=MEM[P].HH.RH;END;IF(P=0)OR(T<>0)THEN{1177:}
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
P:=CURLIST.TAILFIELD+2+CURCMD-7;
IF T<>0 THEN BEGIN IF CURCMD=7 THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(1004);END;BEGIN HELPPTR:=1;
HELPLINE[0]:=1005;END;
END ELSE BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(1006);END;BEGIN HELPPTR:=1;HELPLINE[0]:=1007;END;END;
ERROR;END;END{:1177};SCANMATH(P);END;{:1176}{1181:}
PROCEDURE MATHFRACTION;VAR C:SMALLNUMBER;BEGIN C:=CURCHR;
IF CURLIST.AUXFIELD<>0 THEN{1183:}
BEGIN IF C>=3 THEN BEGIN SCANDELIMITE(2988,FALSE);
SCANDELIMITE(2988,FALSE);END;
IF C MOD 3=0 THEN SCANDIMEN(FALSE,FALSE,FALSE);
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(1014);END;BEGIN HELPPTR:=3;HELPLINE[2]:=1015;HELPLINE[1]:=1016;
HELPLINE[0]:=1017;END;ERROR;END{:1183}
ELSE BEGIN CURLIST.AUXFIELD:=GETNODE(6);MEM[CURLIST.AUXFIELD].HH.B0:=25;
MEM[CURLIST.AUXFIELD].HH.B1:=0;MEM[CURLIST.AUXFIELD+2].HH.RH:=3;
MEM[CURLIST.AUXFIELD+2].HH.LH:=MEM[CURLIST.HEADFIELD].HH.RH;
MEM[CURLIST.AUXFIELD+3].HH:=EMPTYFIELD;
MEM[CURLIST.AUXFIELD+4].QQQQ:=NULLDELIMITE;
MEM[CURLIST.AUXFIELD+5].QQQQ:=NULLDELIMITE;
MEM[CURLIST.HEADFIELD].HH.RH:=0;CURLIST.TAILFIELD:=CURLIST.HEADFIELD;
{1182:}IF C>=3 THEN BEGIN SCANDELIMITE(CURLIST.AUXFIELD+4,FALSE);
SCANDELIMITE(CURLIST.AUXFIELD+5,FALSE);END;
CASE C MOD 3 OF 0:BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[CURLIST.AUXFIELD+1].INT:=CURVAL;END;
1:MEM[CURLIST.AUXFIELD+1].INT:=1073741824;
2:MEM[CURLIST.AUXFIELD+1].INT:=0;END{:1182};END;END;{:1181}{1191:}
PROCEDURE MATHLEFTRIGH;VAR T:SMALLNUMBER;P:HALFWORD;BEGIN T:=CURCHR;
IF(T=31)AND(CURGROUP<>16)THEN{1192:}
BEGIN IF CURGROUP=15 THEN BEGIN SCANDELIMITE(2988,FALSE);
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(643);END;PRINTESC(743);BEGIN HELPPTR:=1;HELPLINE[0]:=1018;END;
ERROR;END ELSE OFFSAVE;END{:1192}ELSE BEGIN P:=NEWNOAD;MEM[P].HH.B0:=T;
SCANDELIMITE(P+1,FALSE);IF T=30 THEN BEGIN PUSHMATH(16);
MEM[CURLIST.HEADFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
END ELSE BEGIN P:=FINMLIST(P);UNSAVE;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=23;MEM[CURLIST.TAILFIELD+1].HH.RH:=3;
MEM[CURLIST.TAILFIELD+1].HH.LH:=P;END;END;END;{:1191}{1194:}
PROCEDURE AFTERMATH;VAR L:BOOLEAN;DANGER:BOOLEAN;M:INTEGER;P:HALFWORD;
A:HALFWORD;{1198:}B:HALFWORD;W:SCALED;Z:SCALED;E:SCALED;Q:SCALED;
D:SCALED;S:SCALED;G1,G2:SMALLNUMBER;R:HALFWORD;T:HALFWORD;{:1198}
BEGIN DANGER:=FALSE;{1195:}
IF(FONTPARAMS[EQTB[3681].HH.RH]<22)OR(FONTPARAMS[EQTB[3697].HH.RH]<22)OR
(FONTPARAMS[EQTB[3713].HH.RH]<22)THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(1019);END;BEGIN HELPPTR:=3;
HELPLINE[2]:=1020;HELPLINE[1]:=1021;HELPLINE[0]:=1022;END;ERROR;
FLUSHMATH;DANGER:=TRUE;
END ELSE IF(FONTPARAMS[EQTB[3682].HH.RH]<13)OR(FONTPARAMS[EQTB[3698].HH.
RH]<13)OR(FONTPARAMS[EQTB[3714].HH.RH]<13)THEN BEGIN BEGIN IF
INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(1023);
END;BEGIN HELPPTR:=3;HELPLINE[2]:=1024;HELPLINE[1]:=1025;
HELPLINE[0]:=1026;END;ERROR;FLUSHMATH;DANGER:=TRUE;END{:1195};
M:=CURLIST.MODEFIELD;L:=FALSE;P:=FINMLIST(0);
IF CURLIST.MODEFIELD=-M THEN BEGIN CURMLIST:=P;CURSTYLE:=2;
MLISTPENALTI:=FALSE;MLISTTOHLIST;A:=HPACK(MEM[2997].HH.RH,0,1);UNSAVE;
SAVEPTR:=SAVEPTR-1;IF SAVESTACK[SAVEPTR+0].INT=1 THEN L:=TRUE;
IF DANGER THEN FLUSHMATH;M:=CURLIST.MODEFIELD;P:=FINMLIST(0);
END ELSE A:=0;IF M<0 THEN{1196:}
BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[4802].INT,0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;CURMLIST:=P;
CURSTYLE:=2;MLISTPENALTI:=(CURLIST.MODEFIELD>0);MLISTTOHLIST;
MEM[CURLIST.TAILFIELD].HH.RH:=MEM[2997].HH.RH;
WHILE MEM[CURLIST.TAILFIELD].HH.RH<>0 DO CURLIST.TAILFIELD:=MEM[CURLIST.
TAILFIELD].HH.RH;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWMATH(EQTB[4802].INT,1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
CURLIST.AUXFIELD:=1000;UNSAVE;END{:1196}ELSE BEGIN{1197:}
BEGIN GETXTOKEN;
IF CURCMD<>3 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(1027);END;BEGIN HELPPTR:=2;HELPLINE[1]:=1028;
HELPLINE[0]:=1029;END;BACKERROR;END;END{:1197};{1199:}CURMLIST:=P;
CURSTYLE:=0;MLISTPENALTI:=FALSE;MLISTTOHLIST;P:=MEM[2997].HH.RH;
ADJUSTTAIL:=2995;B:=HPACK(P,0,1);T:=ADJUSTTAIL;ADJUSTTAIL:=0;
W:=MEM[B+1].INT;Z:=EQTB[4815].INT;S:=EQTB[4816].INT;
IF(A=0)OR DANGER THEN BEGIN E:=0;Q:=0;END ELSE BEGIN E:=MEM[A+1].INT;
Q:=E+FONTINFO[6+PARAMBASE[EQTB[3681].HH.RH]].INT;END;
IF W+Q>Z THEN{1201:}
BEGIN IF(E<>0)AND((W-TOTALSHRINK[0]+Q<=Z)OR(TOTALSHRINK[1]<>0)OR(
TOTALSHRINK[2]<>0)OR(TOTALSHRINK[3]<>0))THEN BEGIN FREENODE(B,7);
B:=HPACK(P,Z-Q,0);END ELSE BEGIN E:=0;IF W>Z THEN BEGIN FREENODE(B,7);
B:=HPACK(P,Z,0);END;END;W:=MEM[B+1].INT;END{:1201};{1202:}D:=HALF(Z-W);
IF(E>0)AND(D<2*E)THEN BEGIN D:=HALF(Z-W-E);
IF P<>0 THEN IF MEM[P].HH.B0=10 THEN D:=0;END{:1202};{1203:}
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[4378].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF(D+S<=EQTB[4814].INT)OR L THEN BEGIN G1:=3;G2:=4;END ELSE BEGIN G1:=5;
G2:=6;END;IF L AND(E=0)THEN BEGIN MEM[A+4].INT:=S;APPENDTOVLIS(A);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(10000);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
END ELSE BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END{:1203};{1204:}
IF E<>0 THEN BEGIN R:=NEWKERN(Z-W-E-D);IF L THEN BEGIN MEM[A].HH.RH:=R;
MEM[R].HH.RH:=B;B:=A;D:=0;END ELSE BEGIN MEM[B].HH.RH:=R;
MEM[R].HH.RH:=A;END;B:=HPACK(B,0,1);END;MEM[B+4].INT:=S+D;
APPENDTOVLIS(B);
IF T<>2995 THEN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=MEM[2995].HH.RH;
CURLIST.TAILFIELD:=T;END{:1204};{1205:}
IF(A<>0)AND(E=0)AND NOT L THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH
:=NEWPENALTY(10000);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[A+4].INT:=S+Z-MEM[A+1].INT;APPENDTOVLIS(A);
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[4379].INT);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
END ELSE BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPENALTY(EQTB[4379]
.INT);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWPARAMGLUE(G2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;END{:1205};
RESUMEAFTERD{:1199};END;END;{:1194}{1200:}PROCEDURE RESUMEAFTERD;
BEGIN IF CURGROUP<>15 THEN CONFUSION(1030);UNSAVE;
CURLIST.PGFIELD:=CURLIST.PGFIELD+3;PUSHNEST;CURLIST.MODEFIELD:=101;
CURLIST.AUXFIELD:=1000;{443:}BEGIN GETXTOKEN;
IF CURCMD<>10 THEN BACKINPUT;END{:443};IF NESTPTR=1 THEN BUILDPAGE;END;
{:1200}{1211:}{1215:}PROCEDURE GETRTOKEN;LABEL 20;
BEGIN 20:REPEAT GETTOKEN;UNTIL CURTOK<>2592;
IF(CURCS=0)OR(CURCS>2358)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(1045);END;BEGIN HELPPTR:=5;
HELPLINE[4]:=1046;HELPLINE[3]:=1047;HELPLINE[2]:=1048;HELPLINE[1]:=1049;
HELPLINE[0]:=1050;END;IF CURCS=0 THEN BACKINPUT;CURTOK:=6454;INSERROR;
GOTO 20;END;END;{:1215}{1229:}PROCEDURE TRAPZEROGLUE;
BEGIN IF(MEM[CURVAL+1].INT=0)AND(MEM[CURVAL+2].INT=0)AND(MEM[CURVAL+3].
INT=0)THEN BEGIN MEM[1].HH.RH:=MEM[1].HH.RH+1;DELETEGLUERE(CURVAL);
CURVAL:=1;END;END;{:1229}{1236:}PROCEDURE DOREGISTERCO(A:SMALLNUMBER);
LABEL 40,10;VAR L,Q,R,S:HALFWORD;P:0..3;BEGIN Q:=CURCMD;{1237:}
BEGIN IF Q<>88 THEN BEGIN GETXTOKEN;
IF(CURCMD>=72)AND(CURCMD<=75)THEN BEGIN L:=CURCHR;P:=CURCMD-72;GOTO 40;
END;IF CURCMD<>88 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(549);END;PRINTCMDCHR(CURCMD,CURCHR);
PRINT(550);PRINTCMDCHR(Q,0);BEGIN HELPPTR:=1;HELPLINE[0]:=1071;END;
ERROR;GOTO 10;END;END;P:=CURCHR;SCANEIGHTBIT;CASE P OF 0:L:=CURVAL+4417;
1:L:=CURVAL+4821;2:L:=CURVAL+2644;3:L:=CURVAL+2900;END;END;40:{:1237};
IF Q=88 THEN SCANOPTIONAL ELSE IF SCANKEYWORD(1067)THEN;
ARITHERROR:=FALSE;IF Q<90 THEN{1238:}
IF P<2 THEN BEGIN IF P=0 THEN SCANINT ELSE SCANDIMEN(FALSE,FALSE,FALSE);
IF Q=89 THEN CURVAL:=CURVAL+EQTB[L].INT;END ELSE BEGIN SCANGLUE(P);
IF Q=89 THEN{1239:}BEGIN Q:=NEWSPEC(CURVAL);R:=EQTB[L].HH.RH;
DELETEGLUERE(CURVAL);MEM[Q+1].INT:=MEM[Q+1].INT+MEM[R+1].INT;
IF MEM[Q+2].INT=0 THEN MEM[Q].HH.B0:=0;
IF MEM[Q].HH.B0=MEM[R].HH.B0 THEN MEM[Q+2].INT:=MEM[Q+2].INT+MEM[R+2].
INT ELSE IF(MEM[Q].HH.B0<MEM[R].HH.B0)AND(MEM[R+2].INT<>0)THEN BEGIN MEM
[Q+2].INT:=MEM[R+2].INT;MEM[Q].HH.B0:=MEM[R].HH.B0;END;
IF MEM[Q+3].INT=0 THEN MEM[Q].HH.B1:=0;
IF MEM[Q].HH.B1=MEM[R].HH.B1 THEN MEM[Q+3].INT:=MEM[Q+3].INT+MEM[R+3].
INT ELSE IF(MEM[Q].HH.B1<MEM[R].HH.B1)AND(MEM[R+3].INT<>0)THEN BEGIN MEM
[Q+3].INT:=MEM[R+3].INT;MEM[Q].HH.B1:=MEM[R].HH.B1;END;CURVAL:=Q;
END{:1239};END{:1238}ELSE{1240:}BEGIN SCANINT;
IF P<2 THEN IF Q=90 THEN CURVAL:=NXPLUSY(EQTB[L].INT,CURVAL,0)ELSE
CURVAL:=XOVERN(EQTB[L].INT,CURVAL)ELSE BEGIN S:=EQTB[L].HH.RH;
R:=NEWSPEC(S);
IF Q=90 THEN BEGIN MEM[R+1].INT:=NXPLUSY(MEM[S+1].INT,CURVAL,0);
MEM[R+2].INT:=NXPLUSY(MEM[S+2].INT,CURVAL,0);
MEM[R+3].INT:=NXPLUSY(MEM[S+3].INT,CURVAL,0);
END ELSE BEGIN MEM[R+1].INT:=XOVERN(MEM[S+1].INT,CURVAL);
MEM[R+2].INT:=XOVERN(MEM[S+2].INT,CURVAL);
MEM[R+3].INT:=XOVERN(MEM[S+3].INT,CURVAL);END;CURVAL:=R;END;END{:1240};
IF ARITHERROR THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(1068);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=1069;HELPLINE[0]:=1070;END;ERROR;GOTO 10;END;
IF P<2 THEN IF(A>=4)THEN GEQWORDDEFIN(L,CURVAL)ELSE EQWORDDEFINE(L,
CURVAL)ELSE BEGIN TRAPZEROGLUE;
IF(A>=4)THEN GEQDEFINE(L,116,CURVAL)ELSE EQDEFINE(L,116,CURVAL);END;
10:END;{:1236}{1243:}PROCEDURE ALTERAUX;VAR C:HALFWORD;
BEGIN IF CURCHR<>ABS(CURLIST.MODEFIELD)THEN REPORTILLEGA ELSE BEGIN C:=
CURCHR;SCANOPTIONAL;IF C=1 THEN BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
CURLIST.AUXFIELD:=CURVAL;END ELSE BEGIN SCANINT;
IF(CURVAL<=0)OR(CURVAL>32767)THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(1072);END;BEGIN HELPPTR:=1;
HELPLINE[0]:=1073;END;INTERROR(CURVAL);
END ELSE CURLIST.AUXFIELD:=CURVAL;END;END;END;{:1243}{1244:}
PROCEDURE ALTERPREVGRA;VAR P:0..NESTSIZE;BEGIN NEST[NESTPTR]:=CURLIST;
P:=NESTPTR;WHILE ABS(NEST[P].MODEFIELD)<>1 DO P:=P-1;SCANOPTIONAL;
SCANINT;
IF CURVAL<0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN
END;PRINTNL(134);PRINT(815);END;PRINTESC(394);BEGIN HELPPTR:=1;
HELPLINE[0]:=1074;END;INTERROR(CURVAL);
END ELSE BEGIN NEST[P].PGFIELD:=CURVAL;CURLIST:=NEST[NESTPTR];END;END;
{:1244}{1245:}PROCEDURE ALTERPAGESOF;VAR C:0..7;BEGIN C:=CURCHR;
SCANOPTIONAL;SCANDIMEN(FALSE,FALSE,FALSE);PAGESOFAR[C]:=CURVAL;END;
{:1245}{1246:}PROCEDURE ALTERINTEGER;VAR C:0..1;BEGIN C:=CURCHR;
SCANOPTIONAL;SCANINT;
IF C=0 THEN DEADCYCLES:=CURVAL ELSE INSERTPENALT:=CURVAL;END;{:1246}
{1247:}PROCEDURE ALTERBOXDIME;VAR C:SMALLNUMBER;B:EIGHTBITS;
BEGIN C:=CURCHR;SCANEIGHTBIT;B:=CURVAL;SCANOPTIONAL;
SCANDIMEN(FALSE,FALSE,FALSE);
IF EQTB[3422+B].HH.RH<>0 THEN MEM[EQTB[3422+B].HH.RH+C].INT:=CURVAL;END;
{:1247}{1257:}PROCEDURE NEWFONT(A:SMALLNUMBER);LABEL 50;VAR U:HALFWORD;
S:SCALED;F:INTERNALFONT;T:STRNUMBER;OLDSETTING:0..21;
BEGIN IF JOBNAME=0 THEN OPENLOGFILE;GETRTOKEN;U:=CURCS;
IF U>=258 THEN T:=HASH[U].RH ELSE IF U>=129 THEN IF U=257 THEN T:=1078
ELSE T:=U-129 ELSE BEGIN OLDSETTING:=SELECTOR;SELECTOR:=21;PRINT(1078);
PRINT(U-1);SELECTOR:=OLDSETTING;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR);END;
T:=MAKESTRING;END;IF(A>=4)THEN GEQDEFINE(U,86,0)ELSE EQDEFINE(U,86,0);
SCANOPTIONAL;SCANFILENAME;{1258:}NAMEINPROGRE:=TRUE;
IF SCANKEYWORD(1079)THEN{1259:}BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
S:=CURVAL;
IF(S<=0)OR(S>=134217728)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(1081);END;PRINTSCALED(S);PRINT(1082);
BEGIN HELPPTR:=2;HELPLINE[1]:=1083;HELPLINE[0]:=1084;END;ERROR;
S:=10*65536;END;END{:1259}ELSE IF SCANKEYWORD(1080)THEN BEGIN SCANINT;
S:=-CURVAL;
IF(CURVAL<=0)OR(CURVAL>32768)THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(414);END;BEGIN HELPPTR:=1;
HELPLINE[0]:=415;END;INTERROR(CURVAL);S:=-1000;END;END ELSE S:=-1000;
NAMEINPROGRE:=FALSE{:1258};{1260:}
FOR F:=1 TO FONTPTR DO IF STREQSTR(FONTNAME[F],CURNAME)AND STREQSTR(
FONTAREA[F],CURAREA)THEN BEGIN IF S>0 THEN BEGIN IF S=FONTSIZE[F]THEN
GOTO 50;
END ELSE IF FONTSIZE[F]=XNOVERD(FONTDSIZE[F],-S,1000)THEN GOTO 50;
END{:1260};F:=READFONTINFO(U,CURNAME,CURAREA,S);50:EQTB[U].HH.RH:=F;
EQTB[2368+F]:=EQTB[U];HASH[2368+F].RH:=T;END;{:1257}{1265:}
PROCEDURE NEWINTERACTI;BEGIN PRINTLN;INTERACTION:=CURCHR;{75:}
IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17{:75};
IF JOBNAME<>0 THEN SELECTOR:=SELECTOR+2;END;{:1265}
PROCEDURE PREFIXEDCOMM;LABEL 30,10;VAR A:SMALLNUMBER;F:INTERNALFONT;
J:HALFWORD;K:0..FONTMEMSIZE;P,Q:HALFWORD;N:INTEGER;E:BOOLEAN;BEGIN A:=0;
WHILE CURCMD=92 DO BEGIN IF NOT ODD(A DIV CURCHR)THEN A:=A+CURCHR;{404:}
REPEAT GETXTOKEN;UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};
IF CURCMD<=69 THEN{1212:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(1040);END;PRINTCMDCHR(CURCMD,CURCHR);PRINTCHAR(39);
BEGIN HELPPTR:=1;HELPLINE[0]:=1041;END;BACKERROR;GOTO 10;END{:1212};END;
{1213:}
IF(CURCMD<>96)AND(A MOD 4<>0)THEN BEGIN BEGIN IF INTERACTION=3 THEN
BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(549);END;PRINTESC(1032);
PRINT(1042);PRINTESC(1033);PRINT(1043);PRINTCMDCHR(CURCMD,CURCHR);
PRINTCHAR(39);BEGIN HELPPTR:=1;HELPLINE[0]:=1044;END;ERROR;END{:1213};
{1214:}
IF EQTB[4410].INT<>0 THEN IF EQTB[4410].INT<0 THEN BEGIN IF(A>=4)THEN A
:=A-4;END ELSE BEGIN IF NOT(A>=4)THEN A:=A+4;END{:1214};
CASE CURCMD OF{1217:}
86:IF(A>=4)THEN GEQDEFINE(3678,119,CURCHR)ELSE EQDEFINE(3678,119,CURCHR)
;{:1217}{1218:}
96:BEGIN IF ODD(CURCHR)AND NOT(A>=4)AND(EQTB[4410].INT>=0)THEN A:=A+4;
E:=(CURCHR>=2);GETRTOKEN;P:=CURCS;Q:=SCANTOKS(TRUE,E);
IF(A>=4)THEN GEQDEFINE(P,110+(A MOD 4),DEFREF)ELSE EQDEFINE(P,110+(A MOD
4),DEFREF);END;{:1218}{1221:}93:BEGIN N:=CURCHR;GETRTOKEN;P:=CURCS;
IF N=0 THEN BEGIN REPEAT GETTOKEN;UNTIL CURCMD<>10;
IF CURTOK=3133 THEN BEGIN GETTOKEN;IF CURCMD=10 THEN GETTOKEN;END;
END ELSE BEGIN GETTOKEN;Q:=CURTOK;GETTOKEN;BACKINPUT;CURTOK:=Q;
BACKINPUT;END;
IF CURCMD>=110 THEN MEM[CURCHR].HH.LH:=MEM[CURCHR].HH.LH+1;
IF(A>=4)THEN GEQDEFINE(P,CURCMD,CURCHR)ELSE EQDEFINE(P,CURCMD,CURCHR);
END;{:1221}{1224:}94:BEGIN N:=CURCHR;GETRTOKEN;P:=CURCS;
IF(A>=4)THEN GEQDEFINE(P,0,256)ELSE EQDEFINE(P,0,256);SCANOPTIONAL;
CASE N OF 0:BEGIN SCANCHARNUM;
IF(A>=4)THEN GEQDEFINE(P,67,CURVAL)ELSE EQDEFINE(P,67,CURVAL);END;
1:BEGIN SCANFIFTEENB;
IF(A>=4)THEN GEQDEFINE(P,68,CURVAL)ELSE EQDEFINE(P,68,CURVAL);END;
OTHERS:BEGIN SCANEIGHTBIT;
CASE N OF 2:IF(A>=4)THEN GEQDEFINE(P,72,4417+CURVAL)ELSE EQDEFINE(P,72,
4417+CURVAL);
3:IF(A>=4)THEN GEQDEFINE(P,73,4821+CURVAL)ELSE EQDEFINE(P,73,4821+CURVAL
);
4:IF(A>=4)THEN GEQDEFINE(P,74,2644+CURVAL)ELSE EQDEFINE(P,74,2644+CURVAL
);
5:IF(A>=4)THEN GEQDEFINE(P,75,2900+CURVAL)ELSE EQDEFINE(P,75,2900+CURVAL
);
6:IF(A>=4)THEN GEQDEFINE(P,71,3166+CURVAL)ELSE EQDEFINE(P,71,3166+CURVAL
);END;END END;END;{:1224}{1225:}95:BEGIN SCANINT;N:=CURVAL;
IF NOT SCANKEYWORD(708)THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(934);END;BEGIN HELPPTR:=2;
HELPLINE[1]:=1061;HELPLINE[0]:=1062;END;ERROR;END;GETRTOKEN;P:=CURCS;
READTOKS(N,P);
IF(A>=4)THEN GEQDEFINE(P,110,CURVAL)ELSE EQDEFINE(P,110,CURVAL);END;
{:1225}{1226:}70,71:BEGIN Q:=CURCS;IF CURCMD=70 THEN BEGIN SCANEIGHTBIT;
P:=3166+CURVAL;END ELSE P:=CURCHR;SCANOPTIONAL;{404:}REPEAT GETXTOKEN;
UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};IF CURCMD<>1 THEN{1227:}
BEGIN IF CURCMD=70 THEN BEGIN SCANEIGHTBIT;CURCMD:=71;
CURCHR:=3166+CURVAL;END;IF CURCMD=71 THEN BEGIN Q:=EQTB[CURCHR].HH.RH;
IF Q=0 THEN IF(A>=4)THEN GEQDEFINE(P,100,0)ELSE EQDEFINE(P,100,0)ELSE
BEGIN MEM[Q].HH.LH:=MEM[Q].HH.LH+1;
IF(A>=4)THEN GEQDEFINE(P,110,Q)ELSE EQDEFINE(P,110,Q);END;GOTO 30;END;
END{:1227};BACKINPUT;CURCS:=Q;Q:=SCANTOKS(FALSE,FALSE);
IF MEM[DEFREF].HH.RH=0 THEN BEGIN IF(A>=4)THEN GEQDEFINE(P,100,0)ELSE
EQDEFINE(P,100,0);BEGIN MEM[DEFREF].HH.RH:=AVAIL;AVAIL:=DEFREF;
DYNUSED:=DYNUSED-1;END;
END ELSE BEGIN IF P=3157 THEN BEGIN MEM[Q].HH.RH:=GETAVAIL;
Q:=MEM[Q].HH.RH;MEM[Q].HH.LH:=637;Q:=GETAVAIL;MEM[Q].HH.LH:=379;
MEM[Q].HH.RH:=MEM[DEFREF].HH.RH;MEM[DEFREF].HH.RH:=Q;END;
IF(A>=4)THEN GEQDEFINE(P,110,DEFREF)ELSE EQDEFINE(P,110,DEFREF);END;END;
{:1226}{1228:}72:BEGIN P:=CURCHR;SCANOPTIONAL;SCANINT;
IF(A>=4)THEN GEQWORDDEFIN(P,CURVAL)ELSE EQWORDDEFINE(P,CURVAL);END;
73:BEGIN P:=CURCHR;SCANOPTIONAL;SCANDIMEN(FALSE,FALSE,FALSE);
IF(A>=4)THEN GEQWORDDEFIN(P,CURVAL)ELSE EQWORDDEFINE(P,CURVAL);END;
74,75:BEGIN P:=CURCHR;N:=CURCMD;SCANOPTIONAL;
IF N=75 THEN SCANGLUE(3)ELSE SCANGLUE(2);TRAPZEROGLUE;
IF(A>=4)THEN GEQDEFINE(P,116,CURVAL)ELSE EQDEFINE(P,116,CURVAL);END;
{:1228}{1232:}84:BEGIN{1233:}
IF CURCHR=3727 THEN N:=15 ELSE IF CURCHR=4239 THEN N:=32768 ELSE IF
CURCHR=4111 THEN N:=32767 ELSE IF CURCHR=4673 THEN N:=16777215 ELSE N:=
127{:1233};P:=CURCHR;SCANSEVENBIT;P:=P+CURVAL;SCANOPTIONAL;SCANINT;
IF((CURVAL<0)AND(P<4673))OR(CURVAL>N)THEN BEGIN BEGIN IF INTERACTION=3
THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);PRINT(1063);END;
PRINTINT(CURVAL);IF P<4673 THEN PRINT(1064)ELSE PRINT(1065);PRINTINT(N);
BEGIN HELPPTR:=1;HELPLINE[0]:=1066;END;ERROR;CURVAL:=0;END;
IF P<4239 THEN IF(A>=4)THEN GEQDEFINE(P,119,CURVAL)ELSE EQDEFINE(P,119,
CURVAL)ELSE IF P<4673 THEN IF(A>=4)THEN GEQDEFINE(P,119,0+CURVAL+0)ELSE
EQDEFINE(P,119,0+CURVAL+0)ELSE IF(A>=4)THEN GEQWORDDEFIN(P,CURVAL)ELSE
EQWORDDEFINE(P,CURVAL);END;{:1232}{1234:}85:BEGIN P:=CURCHR;
SCANFOURBITI;P:=P+CURVAL;SCANOPTIONAL;SCANFONTIDEN;
IF(A>=4)THEN GEQDEFINE(P,119,CURVAL)ELSE EQDEFINE(P,119,CURVAL);END;
{:1234}{1235:}88,89,90,91:DOREGISTERCO(A);{:1235}{1241:}
97:BEGIN SCANEIGHTBIT;
IF(A>=4)THEN SAVESTACK[SAVEPTR+0].INT:=1073742080+CURVAL ELSE SAVESTACK[
SAVEPTR+0].INT:=1073741824+CURVAL;SCANOPTIONAL;SCANBOX;END;{:1241}
{1242:}78:ALTERAUX;79:ALTERPREVGRA;80:ALTERPAGESOF;81:ALTERINTEGER;
82:ALTERBOXDIME;{:1242}{1248:}83:BEGIN SCANOPTIONAL;SCANINT;N:=CURVAL;
IF N<=0 THEN P:=0 ELSE BEGIN P:=GETNODE(2*N+1);MEM[P].HH.LH:=N;
FOR J:=1 TO N DO BEGIN SCANDIMEN(FALSE,FALSE,FALSE);
MEM[P+2*J-1].INT:=CURVAL;SCANDIMEN(FALSE,FALSE,FALSE);
MEM[P+2*J].INT:=CURVAL;END;END;
IF(A>=4)THEN GEQDEFINE(3156,117,P)ELSE EQDEFINE(3156,117,P);END;{:1248}
{1252:}98:IF CURCHR=1 THEN BEGIN NEWPATTERNS;GOTO 30;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(1075);END;HELPPTR:=0;ERROR;REPEAT GETTOKEN;UNTIL CURCMD=2;GOTO 10;
END ELSE BEGIN NEWHYPHEXCEP;GOTO 30;END;{:1252}{1253:}
76:BEGIN FINDFONTDIME(TRUE);K:=CURVAL;SCANOPTIONAL;
SCANDIMEN(FALSE,FALSE,FALSE);FONTINFO[K].INT:=CURVAL;END;
77:BEGIN N:=CURCHR;SCANFONTIDEN;F:=CURVAL;SCANOPTIONAL;SCANINT;
IF N=0 THEN HYPHENCHAR[F]:=CURVAL ELSE SKEWCHAR[F]:=CURVAL;END;{:1253}
{1256:}87:NEWFONT(A);{:1256}{1264:}99:NEWINTERACTI;{:1264}
OTHERS:CONFUSION(1039)END;30:{1269:}
IF AFTERTOKEN<>0 THEN BEGIN CURTOK:=AFTERTOKEN;BACKINPUT;AFTERTOKEN:=0;
END{:1269};10:END;{:1211}{1270:}PROCEDURE DOASSIGNMENT;LABEL 10;
BEGIN WHILE TRUE DO BEGIN{404:}REPEAT GETXTOKEN;
UNTIL(CURCMD<>10)AND(CURCMD<>0){:404};IF CURCMD<=69 THEN GOTO 10;
PREFIXEDCOMM;END;10:END;{:1270}{1275:}PROCEDURE OPENORCLOSEI;VAR C:0..1;
N:0..15;BEGIN C:=CURCHR;SCANFOURBITI;N:=CURVAL;
IF READOPEN[N]<>2 THEN BEGIN ACLOSE(READFILE[N]);READOPEN[N]:=2;END;
IF C<>0 THEN BEGIN SCANOPTIONAL;SCANFILENAME;
IF CUREXT=210 THEN CUREXT:=657;PACKFILENAME(CURNAME,CURAREA,CUREXT);
IF AOPENIN(READFILE[N])THEN READOPEN[N]:=1;END;END;{:1275}{1279:}
PROCEDURE ISSUEMESSAGE;VAR OLDSETTING:0..21;C:0..1;S:STRNUMBER;
BEGIN C:=CURCHR;MEM[2988].HH.RH:=SCANTOKS(FALSE,TRUE);
OLDSETTING:=SELECTOR;SELECTOR:=21;TOKENSHOW(DEFREF);
SELECTOR:=OLDSETTING;FLUSHLIST(DEFREF);
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR);END;
S:=MAKESTRING;IF C=0 THEN{1280:}
BEGIN IF TERMOFFSET+(STRSTART[S+1]-STRSTART[S])>MAXPRINTLINE-2 THEN
PRINTLN ELSE IF(TERMOFFSET>0)OR(FILEOFFSET>0)THEN PRINTCHAR(32);
PRINT(S);BREAK(TTY);END{:1280}ELSE{1283:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(S);END;
IF EQTB[3165].HH.RH<>0 THEN USEERRHELP:=TRUE ELSE IF LONGHELPSEEN THEN
BEGIN HELPPTR:=1;HELPLINE[0]:=1091;
END ELSE BEGIN IF INTERACTION<3 THEN LONGHELPSEEN:=TRUE;
BEGIN HELPPTR:=4;HELPLINE[3]:=1092;HELPLINE[2]:=1093;HELPLINE[1]:=1094;
HELPLINE[0]:=1095;END;END;ERROR;USEERRHELP:=FALSE;END{:1283};
BEGIN STRPTR:=STRPTR-1;POOLPTR:=STRSTART[STRPTR];END;END;{:1279}{1288:}
PROCEDURE SHIFTCASE;VAR B:HALFWORD;P:HALFWORD;T:HALFWORD;C:EIGHTBITS;
BEGIN B:=CURCHR;P:=SCANTOKS(FALSE,FALSE);P:=MEM[DEFREF].HH.RH;
WHILE P<>0 DO BEGIN{1289:}T:=MEM[P].HH.LH;
IF T<4225 THEN BEGIN IF T>=4096 THEN T:=T-1;C:=T MOD 256;
IF C<128 THEN IF EQTB[B+C].HH.RH<>0 THEN T:=256*(T DIV 256)+EQTB[B+C].HH
.RH;IF T>=4096 THEN MEM[P].HH.LH:=T+1 ELSE MEM[P].HH.LH:=T;END{:1289};
P:=MEM[P].HH.RH;END;BEGINTOKENLI(MEM[DEFREF].HH.RH,3);
BEGIN MEM[DEFREF].HH.RH:=AVAIL;AVAIL:=DEFREF;DYNUSED:=DYNUSED-1;END;END;
{:1288}{1293:}PROCEDURE SHOWWHATEVER;LABEL 50;VAR P:HALFWORD;
BEGIN CASE CURCHR OF 3:BEGIN BEGINDIAGNOS;SHOWACTIVITI;END;1:{1296:}
BEGIN SCANEIGHTBIT;BEGINDIAGNOS;PRINTNL(1113);PRINTINT(CURVAL);
PRINTCHAR(61);
IF EQTB[3422+CURVAL].HH.RH=0 THEN PRINT(279)ELSE SHOWBOX(EQTB[3422+
CURVAL].HH.RH);END{:1296};0:{1294:}BEGIN GETTOKEN;
IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(1107);
IF CURCS<>0 THEN BEGIN SPRINTCS(CURCS);PRINTCHAR(61);END;PRINTMEANING;
GOTO 50;END{:1294};OTHERS:{1297:}BEGIN P:=THETOKS;
IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(1107);
TOKENSHOW(2997);FLUSHLIST(MEM[2997].HH.RH);GOTO 50;END{:1297}END;{1298:}
ENDDIAGNOSTI(TRUE);BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(1114);END;
IF SELECTOR=19 THEN IF EQTB[4396].INT<=0 THEN BEGIN SELECTOR:=17;
PRINT(1115);SELECTOR:=19;END{:1298};
50:IF INTERACTION<3 THEN BEGIN HELPPTR:=0;ERRORCOUNT:=ERRORCOUNT-1;
END ELSE IF EQTB[4396].INT>0 THEN BEGIN BEGIN HELPPTR:=3;
HELPLINE[2]:=1102;HELPLINE[1]:=1103;HELPLINE[0]:=1104;END;
END ELSE BEGIN BEGIN HELPPTR:=5;HELPLINE[4]:=1102;HELPLINE[3]:=1103;
HELPLINE[2]:=1104;HELPLINE[1]:=1105;HELPLINE[0]:=1106;END;END;ERROR;END;
{:1293}{1302:}PROCEDURE STOREFMTFILE;LABEL 41,42,31,32;
VAR J,K,L:INTEGER;P,Q:HALFWORD;X:INTEGER;W:FOURQUARTERS;BEGIN{1304:}
IF SAVEPTR<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0
THEN END;PRINTNL(134);PRINT(1117);END;BEGIN HELPPTR:=1;
HELPLINE[0]:=1118;END;BEGIN IF INTERACTION=3 THEN INTERACTION:=2;ERROR;
IF INTERACTION>0 THEN DEBUGHELP;HISTORY:=3;JUMPOUT;END;END{:1304};
{1328:}SELECTOR:=21;PRINT(1129);PRINT(JOBNAME);PRINTCHAR(32);
PRINTINT(EQTB[4390].INT MOD 100);PRINTCHAR(46);PRINTINT(EQTB[4389].INT);
PRINTCHAR(46);PRINTINT(EQTB[4388].INT);PRINTCHAR(41);
IF INTERACTION=0 THEN SELECTOR:=18 ELSE SELECTOR:=19;
BEGIN IF POOLPTR+1>POOLSIZE THEN OVERFLOW(129,POOLSIZE-INITPOOLPTR);END;
FORMATIDENT:=MAKESTRING;PACKJOBNAME(1130);
WHILE NOT WOPENOUT(FMTFILE)DO PROMPTFILENA(1131,1130);PRINTNL(1132);
PRINT(WMAKENAMESTR(FMTFILE));BEGIN STRPTR:=STRPTR-1;
POOLPTR:=STRSTART[STRPTR];END;PRINTNL(FORMATIDENT){:1328};{1307:}
BEGIN FMTFILE↑.INT:=191718838;PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=1;
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=3000;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=5076;PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=1777;
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=307;PUT(FMTFILE);END{:1307};{1309:}
BEGIN FMTFILE↑.INT:=POOLPTR;PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=STRPTR;
PUT(FMTFILE);END;FOR K:=0 TO STRPTR DO BEGIN FMTFILE↑.INT:=STRSTART[K];
PUT(FMTFILE);END;K:=0;WHILE K+4<POOLPTR DO BEGIN W.B0:=STRPOOL[K];
W.B1:=STRPOOL[K+1];W.B2:=STRPOOL[K+2];W.B3:=STRPOOL[K+3];
BEGIN FMTFILE↑.QQQQ:=W;PUT(FMTFILE);END;K:=K+4;END;K:=POOLPTR-4;
W.B0:=STRPOOL[K];W.B1:=STRPOOL[K+1];W.B2:=STRPOOL[K+2];
W.B3:=STRPOOL[K+3];BEGIN FMTFILE↑.QQQQ:=W;PUT(FMTFILE);END;PRINTLN;
PRINTINT(STRPTR);PRINT(1119);PRINTINT(POOLPTR){:1309};{1311:}SORTAVAIL;
VARUSED:=0;BEGIN FMTFILE↑.INT:=LOMEMMAX;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=ROVER;PUT(FMTFILE);END;P:=1;Q:=ROVER;X:=0;
REPEAT FOR K:=P TO Q+1 DO BEGIN FMTFILE↑:=MEM[K];PUT(FMTFILE);END;
X:=X+Q+2-P;VARUSED:=VARUSED+Q-P;P:=Q+MEM[Q].HH.LH;Q:=MEM[Q+1].HH.RH;
UNTIL Q=ROVER;VARUSED:=VARUSED+LOMEMMAX-P;DYNUSED:=MEMEND+1-HIMEMMIN;
FOR K:=P TO LOMEMMAX DO BEGIN FMTFILE↑:=MEM[K];PUT(FMTFILE);END;
X:=X+LOMEMMAX+1-P;BEGIN FMTFILE↑.INT:=HIMEMMIN;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=AVAIL;PUT(FMTFILE);END;
FOR K:=HIMEMMIN TO MEMEND DO BEGIN FMTFILE↑:=MEM[K];PUT(FMTFILE);END;
X:=X+MEMEND+1-HIMEMMIN;P:=AVAIL;WHILE P<>0 DO BEGIN DYNUSED:=DYNUSED-1;
P:=MEM[P].HH.RH;END;BEGIN FMTFILE↑.INT:=VARUSED;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=DYNUSED;PUT(FMTFILE);END;PRINTLN;PRINTINT(X);
PRINT(1120);PRINTINT(VARUSED);PRINTCHAR(38);PRINTINT(DYNUSED){:1311};
{1313:}{1315:}K:=1;REPEAT J:=K;
WHILE J<4366 DO BEGIN IF(EQTB[J].HH.RH=EQTB[J+1].HH.RH)AND(EQTB[J].HH.B0
=EQTB[J+1].HH.B0)AND(EQTB[J].HH.B1=EQTB[J+1].HH.B1)THEN GOTO 41;J:=J+1;
END;L:=4367;GOTO 31;41:J:=J+1;L:=J;
WHILE J<4366 DO BEGIN IF(EQTB[J].HH.RH<>EQTB[J+1].HH.RH)OR(EQTB[J].HH.B0
<>EQTB[J+1].HH.B0)OR(EQTB[J].HH.B1<>EQTB[J+1].HH.B1)THEN GOTO 31;J:=J+1;
END;31:BEGIN FMTFILE↑.INT:=L-K;PUT(FMTFILE);END;
WHILE K<L DO BEGIN BEGIN FMTFILE↑:=EQTB[K];PUT(FMTFILE);END;K:=K+1;END;
K:=J+1;BEGIN FMTFILE↑.INT:=K-L;PUT(FMTFILE);END;UNTIL K=4367{:1315};
{1316:}REPEAT J:=K;
WHILE J<5076 DO BEGIN IF EQTB[J].INT=EQTB[J+1].INT THEN GOTO 42;J:=J+1;
END;L:=5077;GOTO 32;42:J:=J+1;L:=J;
WHILE J<5076 DO BEGIN IF EQTB[J].INT<>EQTB[J+1].INT THEN GOTO 32;J:=J+1;
END;32:BEGIN FMTFILE↑.INT:=L-K;PUT(FMTFILE);END;
WHILE K<L DO BEGIN BEGIN FMTFILE↑:=EQTB[K];PUT(FMTFILE);END;K:=K+1;END;
K:=J+1;BEGIN FMTFILE↑.INT:=K-L;PUT(FMTFILE);END;UNTIL K>5076{:1316};
BEGIN FMTFILE↑.INT:=PARLOC;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=WRITELOC;PUT(FMTFILE);END;{1318:}
BEGIN FMTFILE↑.INT:=HASHUSED;PUT(FMTFILE);END;CSCOUNT:=2357-HASHUSED;
FOR P:=258 TO HASHUSED DO IF HASH[P].RH<>0 THEN BEGIN BEGIN FMTFILE↑.INT
:=P;PUT(FMTFILE);END;BEGIN FMTFILE↑.HH:=HASH[P];PUT(FMTFILE);END;
CSCOUNT:=CSCOUNT+1;END;
FOR P:=HASHUSED+1 TO 2624 DO BEGIN FMTFILE↑.HH:=HASH[P];PUT(FMTFILE);
END;BEGIN FMTFILE↑.INT:=CSCOUNT;PUT(FMTFILE);END;PRINTLN;
PRINTINT(CSCOUNT);PRINT(1121){:1318}{:1313};{1320:}
BEGIN FMTFILE↑.INT:=FMEMPTR;PUT(FMTFILE);END;
FOR K:=0 TO FMEMPTR-1 DO BEGIN FMTFILE↑:=FONTINFO[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTPTR;PUT(FMTFILE);END;
FOR K:=0 TO FONTPTR DO{1322:}BEGIN BEGIN FMTFILE↑.QQQQ:=FONTCHECK[K];
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=FONTSIZE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTDSIZE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTPARAMS[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HYPHENCHAR[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=SKEWCHAR[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTNAME[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTAREA[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTBC[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTEC[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=CHARBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=WIDTHBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HEIGHTBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=DEPTHBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=ITALICBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=LIGKERNBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=KERNBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=EXTENBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=PARAMBASE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FONTGLUE[K];PUT(FMTFILE);END;PRINTNL(1124);
PRINTESC(HASH[2368+K].RH);PRINTCHAR(61);
PRINTFILENAM(FONTNAME[K],FONTAREA[K],210);
IF FONTSIZE[K]<>FONTDSIZE[K]THEN BEGIN PRINT(608);
PRINTSCALED(FONTSIZE[K]);PRINT(266);END;END{:1322};PRINTLN;
PRINTINT(FMEMPTR-7);PRINT(1122);PRINTINT(FONTPTR-0);PRINT(1123);
IF FONTPTR<>1 THEN PRINTCHAR(115){:1320};{1324:}
BEGIN FMTFILE↑.INT:=HYPHCOUNT;PUT(FMTFILE);END;
FOR K:=0 TO 307 DO IF HYPHWORD[K]<>0 THEN BEGIN BEGIN FMTFILE↑.INT:=K;
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=HYPHWORD[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HYPHLIST[K];PUT(FMTFILE);END;END;
BEGIN FMTFILE↑.INT:=TRIEMAX;PUT(FMTFILE);END;
FOR K:=0 TO TRIEMAX DO BEGIN FMTFILE↑.HH:=TRIE[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=TRIEOPPTR;PUT(FMTFILE);END;
FOR K:=1 TO TRIEOPPTR DO BEGIN BEGIN FMTFILE↑.INT:=HYFDISTANCE[K];
PUT(FMTFILE);END;BEGIN FMTFILE↑.INT:=HYFNUM[K];PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=HYFNEXT[K];PUT(FMTFILE);END;END;PRINTLN;
PRINTINT(HYPHCOUNT);PRINT(1125);IF HYPHCOUNT<>1 THEN PRINTCHAR(115);
PRINTNL(1126);PRINTINT(TRIEMAX);PRINT(1127);PRINTINT(0+TRIEOPPTR-0);
PRINT(1128);IF TRIEOPPTR<>1 THEN PRINTCHAR(115){:1324};{1326:}
BEGIN FMTFILE↑.INT:=INTERACTION;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=FORMATIDENT;PUT(FMTFILE);END;
BEGIN FMTFILE↑.INT:=69069;PUT(FMTFILE);END;EQTB[4398].INT:=0{:1326};
{1329:}WCLOSE(FMTFILE){:1329};END;{:1302}{1348:}{1349:}
PROCEDURE NEWWHATSIT(S:SMALLNUMBER;W:SMALLNUMBER);VAR P:HALFWORD;
BEGIN P:=GETNODE(W);MEM[P].HH.B0:=8;MEM[P].HH.B1:=S;
MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;END;{:1349}{1350:}
PROCEDURE NEWWRITEWHAT(W:SMALLNUMBER);BEGIN NEWWHATSIT(CURCHR,W);
IF W<>2 THEN SCANFOURBITI ELSE BEGIN SCANINT;
IF CURVAL<0 THEN CURVAL:=17 ELSE IF CURVAL>15 THEN CURVAL:=16;END;
MEM[CURLIST.TAILFIELD+1].HH.LH:=CURVAL;END;{:1350}PROCEDURE DOEXTENSION;
VAR I,J,K:INTEGER;P,Q,R:HALFWORD;BEGIN CASE CURCHR OF 0:{1351:}
BEGIN NEWWRITEWHAT(3);SCANOPTIONAL;SCANFILENAME;
MEM[CURLIST.TAILFIELD+1].HH.RH:=CURNAME;
MEM[CURLIST.TAILFIELD+2].HH.LH:=CURAREA;
MEM[CURLIST.TAILFIELD+2].HH.RH:=CUREXT;END{:1351};1:{1352:}
BEGIN K:=CURCS;NEWWRITEWHAT(2);CURCS:=K;P:=SCANTOKS(FALSE,FALSE);
MEM[CURLIST.TAILFIELD+1].HH.RH:=DEFREF;END{:1352};2:{1353:}
BEGIN NEWWRITEWHAT(2);MEM[CURLIST.TAILFIELD+1].HH.RH:=0;END{:1353};
3:{1354:}BEGIN NEWWHATSIT(3,2);MEM[CURLIST.TAILFIELD+1].HH.LH:=0;
P:=SCANTOKS(FALSE,TRUE);MEM[CURLIST.TAILFIELD+1].HH.RH:=DEFREF;
END{:1354};4:{1375:}BEGIN GETXTOKEN;
IF(CURCMD=59)AND(CURCHR<=2)THEN BEGIN P:=CURLIST.TAILFIELD;DOEXTENSION;
OUTWHAT(CURLIST.TAILFIELD);FLUSHNODELIS(CURLIST.TAILFIELD);
CURLIST.TAILFIELD:=P;MEM[P].HH.RH:=0;END ELSE BACKINPUT;END{:1375};
OTHERS:CONFUSION(1147)END;END;{:1348}{1068:}PROCEDURE HANDLERIGHTB;
VAR P,Q:HALFWORD;D:SCALED;F:INTEGER;BEGIN CASE CURGROUP OF 1:UNSAVE;
0:BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;
PRINTNL(134);PRINT(905);END;BEGIN HELPPTR:=2;HELPLINE[1]:=906;
HELPLINE[0]:=907;END;ERROR;END;14,15,16:EXTRARIGHTBR;{1085:}
2:PACKAGE(0);3:BEGIN ADJUSTTAIL:=2995;PACKAGE(0);END;4:BEGIN ENDGRAF;
PACKAGE(0);END;5:BEGIN ENDGRAF;PACKAGE(4);END;{:1085}{1100:}
11:BEGIN ENDGRAF;Q:=EQTB[2636].HH.RH;MEM[Q].HH.RH:=MEM[Q].HH.RH+1;
D:=EQTB[4807].INT;F:=EQTB[4409].INT;UNSAVE;SAVEPTR:=SAVEPTR-1;
P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,0,1,1073741823);POPNEST;
IF SAVESTACK[SAVEPTR+0].INT<255 THEN BEGIN BEGIN MEM[CURLIST.TAILFIELD].
HH.RH:=GETNODE(5);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=3;
MEM[CURLIST.TAILFIELD].HH.B1:=0+SAVESTACK[SAVEPTR+0].INT+0;
MEM[CURLIST.TAILFIELD+3].INT:=MEM[P+3].INT+MEM[P+2].INT;
MEM[CURLIST.TAILFIELD+4].HH.LH:=MEM[P+5].HH.RH;
MEM[CURLIST.TAILFIELD+4].HH.RH:=Q;MEM[CURLIST.TAILFIELD+2].INT:=D;
MEM[CURLIST.TAILFIELD+1].INT:=F;
END ELSE BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=GETNODE(2);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=5;MEM[CURLIST.TAILFIELD].HH.B1:=0;
MEM[CURLIST.TAILFIELD+1].INT:=MEM[P+5].HH.RH;DELETEGLUERE(Q);END;
FREENODE(P,7);IF NESTPTR=0 THEN BUILDPAGE;END;8:{1026:}
BEGIN IF CURINPUT.LOCFIELD<>0 THEN{1027:}
BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(871);END;BEGIN HELPPTR:=2;HELPLINE[1]:=872;HELPLINE[0]:=873;END;
ERROR;REPEAT GETTOKEN;UNTIL CURINPUT.LOCFIELD=0;END{:1027};ENDTOKENLIST;
ENDGRAF;UNSAVE;OUTPUTACTIVE:=FALSE;INSERTPENALT:=0;{1028:}
IF EQTB[3677].HH.RH<>0 THEN BEGIN BEGIN IF INTERACTION=3 THEN BEGIN IF
INSKP0 THEN END;PRINTNL(134);PRINT(874);END;PRINTESC(278);PRINTINT(255);
BEGIN HELPPTR:=3;HELPLINE[2]:=875;HELPLINE[1]:=876;HELPLINE[0]:=877;END;
BOXERROR(255);END{:1028};
IF CURLIST.TAILFIELD<>CURLIST.HEADFIELD THEN BEGIN MEM[PAGETAIL].HH.RH:=
MEM[CURLIST.HEADFIELD].HH.RH;PAGETAIL:=CURLIST.TAILFIELD;END;
IF MEM[2998].HH.RH<>0 THEN BEGIN IF MEM[2999].HH.RH=0 THEN NEST[0].
TAILFIELD:=PAGETAIL;MEM[PAGETAIL].HH.RH:=MEM[2999].HH.RH;
MEM[2999].HH.RH:=MEM[2998].HH.RH;MEM[2998].HH.RH:=0;PAGETAIL:=2998;END;
POPNEST;BUILDPAGE;END{:1026};{:1100}{1118:}10:BUILDDISCRET;{:1118}
{1132:}6:BEGIN BACKINPUT;CURTOK:=6455;
BEGIN IF INTERACTION=3 THEN BEGIN IF INSKP0 THEN END;PRINTNL(134);
PRINT(490);END;PRINTESC(765);PRINT(491);BEGIN HELPPTR:=1;
HELPLINE[0]:=986;END;INSERROR;END;{:1132}{1133:}7:BEGIN ENDGRAF;UNSAVE;
ALIGNPEEK;END;{:1133}{1168:}12:BEGIN ENDGRAF;UNSAVE;SAVEPTR:=SAVEPTR-2;
P:=VPACKAGE(MEM[CURLIST.HEADFIELD].HH.RH,SAVESTACK[SAVEPTR+1].INT,
SAVESTACK[SAVEPTR+0].INT,1073741823);POPNEST;
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=29;MEM[CURLIST.TAILFIELD+1].HH.RH:=2;
MEM[CURLIST.TAILFIELD+1].HH.LH:=P;END;{:1168}{1173:}13:BUILDCHOICES;
{:1173}{1186:}9:BEGIN UNSAVE;SAVEPTR:=SAVEPTR-1;
MEM[SAVESTACK[SAVEPTR+0].INT].HH.RH:=3;P:=FINMLIST(0);
MEM[SAVESTACK[SAVEPTR+0].INT].HH.LH:=P;
IF P<>0 THEN IF MEM[P].HH.RH=0 THEN IF MEM[P].HH.B0=16 THEN BEGIN IF MEM
[P+3].HH.RH=0 THEN IF MEM[P+2].HH.RH=0 THEN BEGIN MEM[SAVESTACK[SAVEPTR
+0].INT].HH:=MEM[P+1].HH;FREENODE(P,4);END;
END ELSE IF MEM[P].HH.B0=28 THEN IF SAVESTACK[SAVEPTR+0].INT=CURLIST.
TAILFIELD+1 THEN IF MEM[CURLIST.TAILFIELD].HH.B0=16 THEN{1187:}
BEGIN Q:=CURLIST.HEADFIELD;
WHILE MEM[Q].HH.RH<>CURLIST.TAILFIELD DO Q:=MEM[Q].HH.RH;
MEM[Q].HH.RH:=P;FREENODE(CURLIST.TAILFIELD,4);CURLIST.TAILFIELD:=P;
END{:1187};END;{:1186}OTHERS:CONFUSION(908)END;END;{:1068}
PROCEDURE MAINCONTROL;LABEL 60,21,70,71,72,73,74,10;VAR T:INTEGER;
{1032:}L:QUARTERWORD;C:EIGHTBITS;F:INTERNALFONT;R:HALFWORD;P:HALFWORD;
K:0..FONTMEMSIZE;Q:HALFWORD;I:FOURQUARTERS;J:FOURQUARTERS;S:INTEGER;
LIGATUREPRES:BOOLEAN;{:1032}
BEGIN IF EQTB[3163].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3163].HH.RH,12);
60:GETXTOKEN;21:{1031:}
IF INTERRUPT<>0 THEN IF OKTOINTERRUP THEN BEGIN BACKINPUT;
BEGIN IF INTERRUPT<>0 THEN PAUSEFORINST;END;GOTO 60;END;
IF PANICKING THEN CHECKMEM(FALSE);
IF EQTB[4403].INT>0 THEN SHOWCURCMDCH{:1031};
CASE ABS(CURLIST.MODEFIELD)+CURCMD OF 112,113,168:GOTO 70;
117:BEGIN SCANCHARNUM;CURCHR:=CURVAL;GOTO 70;END;
111:IF CURLIST.AUXFIELD=1000 THEN GOTO 74 ELSE APPSPACE;165,265:GOTO 74;
{1045:}1,101,201,11,211:;40,140,240:BEGIN{406:}REPEAT GETXTOKEN;
UNTIL CURCMD<>10{:406};GOTO 21;END;15:IF ITSALLOVER THEN GOTO 10;{1048:}
23,122,222,70,170,270,{:1048}{1098:}39,{:1098}{1111:}45,{:1111}{1144:}
49,149,{:1144}7,107,207:REPORTILLEGA;{1046:}
8,108,9,109,18,118,69,169,51,151,16,116,50,150,53,153,66,166,54,154,55,
155,57,157,56,156,31,131,52,152,29,129,47,147,210,214,215,228,225,234,
237{:1046}:INSERTDOLLAR;{1056:}
37,136,236:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=SCANRULESPEC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
IF ABS(CURLIST.MODEFIELD)=1 THEN CURLIST.AUXFIELD:=-65536000 ELSE IF ABS
(CURLIST.MODEFIELD)=101 THEN CURLIST.AUXFIELD:=1000;END;{:1056}{1057:}
28,127,227,229:APPENDGLUE;30,130,230,231:APPENDKERN;{:1057}{1063:}
2,102:NEWSAVELEVEL(1);62,162,262:NEWSAVELEVEL(14);
63,163,263:IF CURGROUP=14 THEN UNSAVE ELSE OFFSAVE;{:1063}{1067:}
3,103,203:HANDLERIGHTB;{:1067}{1073:}22,123,223:BEGIN T:=CURCHR;
SCANDIMEN(FALSE,FALSE,FALSE);
IF T=0 THEN SAVESTACK[SAVEPTR+0].INT:=CURVAL ELSE SAVESTACK[SAVEPTR+0].
INT:=-CURVAL;SCANBOX;END;
32,132,232:BEGIN SAVESTACK[SAVEPTR+0].INT:=1073742237+CURCHR;SCANBOX;
END;21,121,221:BEGIN SAVESTACK[SAVEPTR+0].INT:=0;BEGINBOX;END;{:1073}
{1090:}44:NEWGRAF(CURCHR>0);
12,13,17,68,4,24,36,46,48,27,34,65:BEGIN BACKINPUT;NEWGRAF(TRUE);END;
{:1090}{1092:}144,244:INDENTINHMOD;{:1092}{1094:}14:BEGIN NORMALPARAGR;
IF CURLIST.MODEFIELD>0 THEN BUILDPAGE;END;
114:BEGIN IF ALIGNSTATE<0 THEN OFFSAVE;ENDGRAF;
IF CURLIST.MODEFIELD=1 THEN BUILDPAGE;END;
115,128,137,125,133:HEADFORVMODE;{:1094}{1097:}
38,138,238,139,239:BEGININSERTO;19,119,219:MAKEMARK;{:1097}{1102:}
43,143,243:APPENDPENALT;{:1102}{1104:}26,126,226:DELETELAST;{:1104}
{1109:}25,124,224:UNPACKAGE;{:1109}{1112:}145:APPENDITALIC;
245:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(0);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;{:1112}{1116:}
148,248:APPENDDISCRE;{:1116}{1122:}146:MAKEACCENT;{:1122}{1126:}
6,106,206,5,105,205:ALIGNERROR;35,135,235:NOALIGNERROR;
64,164,264:OMITERROR;{:1126}{1130:}33,134:INITALIGN;
233:IF PRIVILEGED THEN INITALIGN;10,110:DOENDV;{:1130}{1134:}
67,167,267:CSERROR;{:1134}{1137:}104:INITMATH;{:1137}{1140:}
249:IF PRIVILEGED THEN STARTEQNO;{:1140}{1150:}
202:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;BACKINPUT;
SCANMATH(CURLIST.TAILFIELD+1);END;{:1150}{1154:}
212,213,268:IF CURCHR<128 THEN SETMATHCHAR(0+EQTB[4239+CURCHR].HH.RH-0)
ELSE SETMATHCHAR(CURCHR);217:BEGIN SCANCHARNUM;CURCHR:=CURVAL;
IF CURCHR<128 THEN SETMATHCHAR(0+EQTB[4239+CURCHR].HH.RH-0)ELSE
SETMATHCHAR(CURCHR);END;218:BEGIN SCANFIFTEENB;SETMATHCHAR(CURVAL);END;
269:SETMATHCHAR(CURCHR);216:BEGIN SCANTWENTYSE;
SETMATHCHAR(CURVAL DIV 4096);END;{:1154}{1158:}
251:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWNOAD;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B0:=CURCHR;SCANMATH(CURLIST.TAILFIELD+1);END;
252:MATHLIMITSWI;{:1158}{1162:}266:MATHRADICAL;{:1162}{1164:}
246,247:MATHAC;{:1164}{1167:}257:BEGIN SCANSPEC;NEWSAVELEVEL(12);
NORMALPARAGR;PUSHNEST;CURLIST.MODEFIELD:=-1;CURLIST.AUXFIELD:=-65536000;
IF EQTB[3162].HH.RH<>0 THEN BEGINTOKENLI(EQTB[3162].HH.RH,11);END;
{:1167}{1171:}254:BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWSTYLE(CURCHR);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
256:BEGIN BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWGLUE(1);
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;
MEM[CURLIST.TAILFIELD].HH.B1:=98;END;255:APPENDCHOICE;{:1171}{1175:}
209,208:SUBSUP;{:1175}{1180:}253:MATHFRACTION;{:1180}{1190:}
250:MATHLEFTRIGH;{:1190}{1193:}
204:IF CURGROUP=15 THEN AFTERMATH ELSE OFFSAVE;{:1193}{1210:}
71,171,271,72,172,272,73,173,273,74,174,274,75,175,275,76,176,276,77,177
,277,78,178,278,79,179,279,80,180,280,81,181,281,82,182,282,83,183,283,
84,184,284,85,185,285,86,186,286,87,187,287,88,188,288,89,189,289,90,190
,290,91,191,291,92,192,292,93,193,293,94,194,294,95,195,295,96,196,296,
97,197,297,98,198,298,99,199,299,100,200,300:PREFIXEDCOMM;{:1210}{1268:}
41,141,241:BEGIN GETTOKEN;AFTERTOKEN:=CURTOK;END;{:1268}{1271:}
42,142,242:BEGIN GETTOKEN;SAVEFORAFTER(CURTOK);END;{:1271}{1274:}
61,161,261:OPENORCLOSEI;{:1274}{1276:}59,159,259:ISSUEMESSAGE;{:1276}
{1285:}58,158,258:SHIFTCASE;{:1285}{1290:}20,120,220:SHOWWHATEVER;
{:1290}{1347:}60,160,260:DOEXTENSION;{:1347}{:1045}END;GOTO 60;
70:{1033:}F:=EQTB[3678].HH.RH;C:=CURCHR;
71:IF(C<FONTBC[F])OR(C>FONTEC[F])THEN BEGIN CHARWARNING(F,C);GOTO 60;
END;72:Q:=CURLIST.TAILFIELD;LIGATUREPRES:=FALSE;L:=0+C+0;73:{1034:}
IF C<128 THEN BEGIN S:=EQTB[4111+C].HH.RH;
IF S=1000 THEN CURLIST.AUXFIELD:=1000 ELSE IF S<1000 THEN BEGIN IF S>0
THEN CURLIST.AUXFIELD:=S;
END ELSE IF CURLIST.AUXFIELD<1000 THEN CURLIST.AUXFIELD:=1000 ELSE
CURLIST.AUXFIELD:=S;END ELSE CURLIST.AUXFIELD:=1000{:1034};{1035:}
I:=FONTINFO[CHARBASE[F]+L].QQQQ;IF(I.B0>0)THEN BEGIN BEGIN P:=AVAIL;
IF P=0 THEN P:=GETAVAIL ELSE BEGIN AVAIL:=MEM[P].HH.RH;MEM[P].HH.RH:=0;
DYNUSED:=DYNUSED+1;END;END;MEM[P].HH.B0:=F;MEM[P].HH.B1:=0+C+0;
MEM[CURLIST.TAILFIELD].HH.RH:=P;CURLIST.TAILFIELD:=P;
END ELSE CHARWARNING(F,0+L-0);{1036:}GETNEXT;
IF CURCMD=11 THEN R:=0+CURCHR+0 ELSE IF CURCMD=12 THEN R:=0+CURCHR+0
ELSE IF CURCMD=67 THEN R:=0+CURCHR+0 ELSE BEGIN XTOKEN;
IF(CURCMD=11)OR(CURCMD=12)OR(CURCMD=67)THEN R:=0+CURCHR+0 ELSE IF CURCMD
=16 THEN BEGIN SCANCHARNUM;R:=0+CURVAL+0;END ELSE R:=256;END;
IF((0+I.B2-0)MOD 4)=1 THEN IF R<>256 THEN{1037:}
BEGIN K:=LIGKERNBASE[F]+I.B3;REPEAT J:=FONTINFO[K].QQQQ;
IF J.B1=R THEN IF J.B2<128 THEN{1040:}BEGIN LIGATUREPRES:=TRUE;L:=J.B3;
C:=0+R-0;GOTO 73;END{:1040}ELSE{1038:}BEGIN{1039:}
IF LIGATUREPRES THEN BEGIN P:=NEWLIGATURE(F,L,MEM[Q].HH.RH);
MEM[Q].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
IF C=HYPHENCHAR[F]THEN IF CURLIST.MODEFIELD=101 THEN BEGIN MEM[CURLIST.
TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END{:1039};
BEGIN MEM[CURLIST.TAILFIELD].HH.RH:=NEWKERN(FONTINFO[KERNBASE[F]+J.B3].
INT);CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END;C:=0+R-0;
GOTO 72;END{:1038};K:=K+1;UNTIL J.B0>=128;END{:1037};{1039:}
IF LIGATUREPRES THEN BEGIN P:=NEWLIGATURE(F,L,MEM[Q].HH.RH);
MEM[Q].HH.RH:=P;CURLIST.TAILFIELD:=P;END;
IF C=HYPHENCHAR[F]THEN IF CURLIST.MODEFIELD=101 THEN BEGIN MEM[CURLIST.
TAILFIELD].HH.RH:=NEWDISC;
CURLIST.TAILFIELD:=MEM[CURLIST.TAILFIELD].HH.RH;END{:1039};
IF R=256 THEN GOTO 21;C:=0+R-0;GOTO 71{:1036}{:1035}{:1033};74:{1041:}
IF EQTB[2638].HH.RH=1 THEN BEGIN{1042:}
BEGIN P:=FONTGLUE[EQTB[3678].HH.RH];
IF P=0 THEN BEGIN F:=EQTB[3678].HH.RH;P:=NEWSPEC(1);K:=PARAMBASE[F]+2;
MEM[P+1].INT:=FONTINFO[K].INT;MEM[P+2].INT:=FONTINFO[K+1].INT;
MEM[P+3].INT:=FONTINFO[K+2].INT;FONTGLUE[F]:=P;END;END{:1042};
Q:=NEWGLUE(P);END ELSE Q:=NEWPARAMGLUE(12);
MEM[CURLIST.TAILFIELD].HH.RH:=Q;CURLIST.TAILFIELD:=Q;GOTO 60{:1041};
10:END;{:1030}{1284:}PROCEDURE GIVEERRHELP;
BEGIN TOKENSHOW(EQTB[3165].HH.RH);END;{:1284}{1303:}{524:}
FUNCTION OPENFMTFILE:BOOLEAN;LABEL 40,10;VAR J:0..BUFSIZE;
BEGIN J:=CURINPUT.LOCFIELD;
IF BUFFER[CURINPUT.LOCFIELD]=38 THEN BEGIN CURINPUT.LOCFIELD:=CURINPUT.
LOCFIELD+1;J:=CURINPUT.LOCFIELD;BUFFER[LAST]:=32;
WHILE BUFFER[J]<>32 DO J:=J+1;PACKBUFFERED(0,CURINPUT.LOCFIELD,J-1);
IF WOPENIN(FMTFILE)THEN GOTO 40;PACKBUFFERED(9,CURINPUT.LOCFIELD,J-1);
IF WOPENIN(FMTFILE)THEN GOTO 40;BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'Sorry, I can''t find that format;',' will try PLAIN.');
BREAK(TTY);END;PACKBUFFERED(14,1,0);
IF NOT WOPENIN(FMTFILE)THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'I can''t find the PLAIN format file!');OPENFMTFILE:=FALSE;
GOTO 10;END;40:CURINPUT.LOCFIELD:=J;OPENFMTFILE:=TRUE;10:END;{:524}
FUNCTION LOADFMTFILE:BOOLEAN;LABEL 6666,10;VAR J,K:INTEGER;P,Q:HALFWORD;
X:INTEGER;W:FOURQUARTERS;BEGIN{1308:}X:=FMTFILE↑.INT;
IF X<>191718838 THEN GOTO 6666;BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<>1 THEN GOTO 6666;BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<>3000 THEN GOTO 6666;BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<>5076 THEN GOTO 6666;BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<>1777 THEN GOTO 6666;BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<>307 THEN GOTO 6666{:1308};{1310:}BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;IF X<0 THEN GOTO 6666;
IF X>POOLSIZE THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'---! Must increase the ','string pool size');GOTO 6666;
END ELSE POOLPTR:=X;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<0 THEN GOTO 6666;
IF X>MAXSTRINGS THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'---! Must increase the ','max strings');GOTO 6666;
END ELSE STRPTR:=X;END;FOR K:=0 TO STRPTR DO BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>POOLPTR)THEN GOTO 6666 ELSE STRSTART[K]:=X;END;K:=0;
WHILE K+4<POOLPTR DO BEGIN BEGIN GET(FMTFILE);W:=FMTFILE↑.QQQQ;END;
STRPOOL[K]:=W.B0;STRPOOL[K+1]:=W.B1;STRPOOL[K+2]:=W.B2;
STRPOOL[K+3]:=W.B3;K:=K+4;END;K:=POOLPTR-4;BEGIN GET(FMTFILE);
W:=FMTFILE↑.QQQQ;END;STRPOOL[K]:=W.B0;STRPOOL[K+1]:=W.B1;
STRPOOL[K+2]:=W.B2;STRPOOL[K+3]:=W.B3{:1310};{1312:}
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<1020)OR(X>2986)THEN GOTO 6666 ELSE LOMEMMAX:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<21)OR(X>LOMEMMAX)THEN GOTO 6666 ELSE ROVER:=X;END;P:=1;Q:=ROVER;
X:=0;REPEAT FOR K:=P TO Q+1 DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE↑;END;
P:=Q+MEM[Q].HH.LH;
IF(P>LOMEMMAX)OR((Q>=MEM[Q+1].HH.RH)AND(MEM[Q+1].HH.RH<>ROVER))THEN GOTO
6666;Q:=MEM[Q+1].HH.RH;UNTIL Q=ROVER;
FOR K:=P TO LOMEMMAX DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE↑;END;
IF MEMMIN<-1 THEN BEGIN P:=MEM[ROVER+1].HH.LH;Q:=MEMMIN+1;
MEM[MEMMIN].HH.RH:=0;MEM[MEMMIN].HH.LH:=0;MEM[P+1].HH.RH:=Q;
MEM[ROVER+1].HH.LH:=Q;MEM[Q+1].HH.RH:=ROVER;MEM[Q+1].HH.LH:=P;
MEM[Q].HH.RH:=32768;MEM[Q].HH.LH:=1-Q;END;BEGIN BEGIN GET(FMTFILE);
X:=FMTFILE↑.INT;END;
IF(X<LOMEMMAX+1)OR(X>2987)THEN GOTO 6666 ELSE HIMEMMIN:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>3000)THEN GOTO 6666 ELSE AVAIL:=X;END;MEMEND:=3000;
FOR K:=HIMEMMIN TO MEMEND DO BEGIN GET(FMTFILE);MEM[K]:=FMTFILE↑;END;
BEGIN GET(FMTFILE);VARUSED:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
DYNUSED:=FMTFILE↑.INT;END{:1312};{1314:}{1317:}K:=1;
REPEAT BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<1)OR(K+X>5077)THEN GOTO 6666;
FOR J:=K TO K+X-1 DO BEGIN GET(FMTFILE);EQTB[J]:=FMTFILE↑;END;K:=K+X;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(K+X>5077)THEN GOTO 6666;
FOR J:=K TO K+X-1 DO EQTB[J]:=EQTB[K-1];K:=K+X;UNTIL K>5076{:1317};
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<258)OR(X>2358)THEN GOTO 6666 ELSE PARLOC:=X;END;
PARTOKEN:=4096+PARLOC;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<258)OR(X>2358)THEN GOTO 6666 ELSE WRITELOC:=X;END;{1319:}
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<258)OR(X>2358)THEN GOTO 6666 ELSE HASHUSED:=X;END;P:=257;
REPEAT BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<P+1)OR(X>HASHUSED)THEN GOTO 6666 ELSE P:=X;END;BEGIN GET(FMTFILE);
HASH[P]:=FMTFILE↑.HH;END;UNTIL P=HASHUSED;
FOR P:=HASHUSED+1 TO 2624 DO BEGIN GET(FMTFILE);HASH[P]:=FMTFILE↑.HH;
END;BEGIN GET(FMTFILE);CSCOUNT:=FMTFILE↑.INT;END{:1319}{:1314};{1321:}
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<7 THEN GOTO 6666;
IF X>FONTMEMSIZE THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'---! Must increase the ','font mem size');GOTO 6666;
END ELSE FMEMPTR:=X;END;FOR K:=0 TO FMEMPTR-1 DO BEGIN GET(FMTFILE);
FONTINFO[K]:=FMTFILE↑;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF X<0 THEN GOTO 6666;IF X>FONTMAX THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'---! Must increase the ','font max');GOTO 6666;
END ELSE FONTPTR:=X;END;FOR K:=0 TO FONTPTR DO{1323:}
BEGIN BEGIN GET(FMTFILE);FONTCHECK[K]:=FMTFILE↑.QQQQ;END;
BEGIN GET(FMTFILE);FONTSIZE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
FONTDSIZE[K]:=FMTFILE↑.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>32768)THEN GOTO 6666 ELSE FONTPARAMS[K]:=X;END;
BEGIN GET(FMTFILE);HYPHENCHAR[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
SKEWCHAR[K]:=FMTFILE↑.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTNAME[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FONTAREA[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTBC[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE FONTEC[K]:=X;END;BEGIN GET(FMTFILE);
CHARBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
WIDTHBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
HEIGHTBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
DEPTHBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
ITALICBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
LIGKERNBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
KERNBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
EXTENBASE[K]:=FMTFILE↑.INT;END;BEGIN GET(FMTFILE);
PARAMBASE[K]:=FMTFILE↑.INT;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>LOMEMMAX)THEN GOTO 6666 ELSE FONTGLUE[K]:=X;END;
END{:1323}{:1321};{1325:}BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>307)THEN GOTO 6666 ELSE HYPHCOUNT:=X;END;
FOR K:=1 TO HYPHCOUNT DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>307)THEN GOTO 6666 ELSE J:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE HYPHWORD[J]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>32768)THEN GOTO 6666 ELSE HYPHLIST[J]:=X;END;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;IF X<0 THEN GOTO 6666;
IF X>TRIESIZE THEN BEGIN BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'---! Must increase the ','trie size');GOTO 6666;
END ELSE TRIEMAX:=X;END;FOR K:=0 TO TRIEMAX DO BEGIN GET(FMTFILE);
TRIE[K]:=FMTFILE↑.HH;END;BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE TRIEOPPTR:=X;END;
FOR K:=1 TO TRIEOPPTR DO BEGIN BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;
END;IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFDISTANCE[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>63)THEN GOTO 6666 ELSE HYFNUM[K]:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>255)THEN GOTO 6666 ELSE HYFNEXT[K]:=X;END;END{:1325};{1327:}
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>3)THEN GOTO 6666 ELSE INTERACTION:=X;END;
BEGIN BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<0)OR(X>STRPTR)THEN GOTO 6666 ELSE FORMATIDENT:=X;END;
BEGIN GET(FMTFILE);X:=FMTFILE↑.INT;END;
IF(X<>69069)OR EOF(FMTFILE)THEN GOTO 6666{:1327};LOADFMTFILE:=TRUE;
GOTO 10;6666:BEGIN IF INSKP0 THEN END;
WRITELN(TTY,'(Fatal format file error; I''m stymied)');
LOADFMTFILE:=FALSE;10:END;{:1303}{1330:}{1333:}PROCEDURE CLOSEFILESAN;
VAR K:INTEGER;BEGIN{1367:}
FOR K:=0 TO 15 DO IF WRITEOPEN[K]THEN ACLOSE(WRITEFILE[K]){:1367};
IF EQTB[4398].INT>0 THEN{1334:}
IF JOBNAME>0 THEN BEGIN WRITELN(LOGFILE,' ');
WRITELN(LOGFILE,'Here is how much of TeX''s memory',' you used:');
WRITE(LOGFILE,' ',STRPTR-INITSTRPTR:1,' string');
IF STRPTR<>INITSTRPTR+1 THEN WRITE(LOGFILE,'s');
WRITELN(LOGFILE,' out of ',MAXSTRINGS-INITSTRPTR:1);
WRITELN(LOGFILE,' ',POOLPTR-INITPOOLPTR:1,' string characters out of ',
POOLSIZE-INITPOOLPTR:1);
WRITELN(LOGFILE,' ',LOMEMMAX-MEMMIN+MEMEND-HIMEMMIN+2:1,
' words of memory out of ',MEMEND+1-MEMMIN:1);
WRITELN(LOGFILE,' ',CSCOUNT:1,' multiletter control sequences out of ',
2100:1);
WRITE(LOGFILE,' ',FMEMPTR:1,' words of font info for ',FONTPTR-0:1,
' font');IF FONTPTR<>1 THEN WRITE(LOGFILE,'s');
WRITELN(LOGFILE,', out of ',FONTMEMSIZE:1,' for ',FONTMAX-0:1);
WRITE(LOGFILE,' ',HYPHCOUNT:1,' hyphenation exception');
IF HYPHCOUNT<>1 THEN WRITE(LOGFILE,'s');
WRITELN(LOGFILE,' out of ',307:1);
WRITELN(LOGFILE,' ',MAXINSTACK:1,'i,',MAXNESTSTACK:1,'n,',MAXPARAMSTAC:1
,'p,',MAXBUFSTACK+1:1,'b,',MAXSAVESTACK+6:1,'s stack positions out of ',
STACKSIZE:1,'i,',NESTSIZE:1,'n,',PARAMSIZE:1,'p,',BUFSIZE:1,'b,',
SAVESIZE:1,'s');END{:1334};BEGIN IF INSKP0 THEN END;{642:}
IF TOTALPAGES=0 THEN PRINTNL(702)ELSE BEGIN BEGIN DVIBUF[DVIPTR]:=248;
DVIPTR:=DVIPTR+1;IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(LASTBOP);
LASTBOP:=DVIOFFSET+DVIPTR-5;DVIFOUR(25400000);DVIFOUR(473628672);
PREPAREMAG;DVIFOUR(EQTB[4384].INT);DVIFOUR(MAXV);DVIFOUR(MAXH);
BEGIN DVIBUF[DVIPTR]:=MAXPUSH DIV 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=MAXPUSH MOD 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=TOTALPAGES DIV 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;
BEGIN DVIBUF[DVIPTR]:=TOTALPAGES MOD 256;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;{643:}
WHILE FONTPTR>0 DO BEGIN IF FONTUSED[FONTPTR]THEN DVIFONTDEF(FONTPTR);
FONTPTR:=FONTPTR-1;END{:643};BEGIN DVIBUF[DVIPTR]:=249;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;DVIFOUR(LASTBOP);
BEGIN DVIBUF[DVIPTR]:=2;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;K:=4+((DVIBUFSIZE-DVIPTR)MOD 4);
WHILE K>0 DO BEGIN BEGIN DVIBUF[DVIPTR]:=223;DVIPTR:=DVIPTR+1;
IF DVIPTR=DVILIMIT THEN DVISWAP;END;K:=K-1;END;{599:}
IF DVILIMIT=HALFBUF THEN WRITEDVI(HALFBUF,DVIBUFSIZE-1);
IF DVIPTR>0 THEN WRITEDVI(0,DVIPTR-1){:599};PRINTNL(703);
PRINT(OUTPUTFILENA);PRINT(158);PRINTINT(TOTALPAGES);PRINT(704);
IF TOTALPAGES<>1 THEN PRINTCHAR(115);PRINT(705);
PRINTINT(DVIOFFSET+DVIPTR);PRINT(706);BCLOSE(DVIFILE);
IF PSEUDOTYPEIN=0 THEN BEGIN K:=SELECTOR;SELECTOR:=21;
POOLPTR:=STRSTART[STRPTR];PRINT(707);PRINT(OUTPUTFILENA);SELECTOR:=K;
IF POOLPTR<POOLSIZE THEN IF STRPTR<MAXSTRINGS THEN PSEUDOTYPEIN:=
MAKESTRING;END;END{:642};IF JOBNAME>0 THEN BEGIN WRITELN(LOGFILE);
ACLOSE(LOGFILE);SELECTOR:=SELECTOR-2;
IF SELECTOR=17 THEN BEGIN PRINTNL(1133);PRINT(LOGNAME);PRINTCHAR(46);
END;END;IF(PSEUDOTYPEIN<>0)AND(INTERACTION>0)THEN BEGIN WRITELN(TTY);
FOR K:=STRSTART[PSEUDOTYPEIN]TO STRSTART[PSEUDOTYPEIN+1]-1 DO PTWR1W(0,
ORD(XCHR[STRPOOL[K]]));END;END;{:1333}{1335:}PROCEDURE FINALCLEANUP;
LABEL 10;VAR C:SMALLNUMBER;BEGIN C:=CURCHR;
IF JOBNAME=0 THEN OPENLOGFILE;IF CURLEVEL>1 THEN BEGIN PRINTNL(40);
PRINTESC(1134);PRINT(1135);PRINTINT(CURLEVEL-1);PRINTCHAR(41);END;
WHILE CONDPTR<>0 DO BEGIN PRINTNL(40);PRINTESC(1134);PRINT(1136);
PRINTCMDCHR(104,CURIF);IF IFLINE<>0 THEN BEGIN PRINT(1137);
PRINTINT(IFLINE);END;PRINT(1138);IFLINE:=MEM[CONDPTR+1].INT;
CURIF:=MEM[CONDPTR].HH.B1;CONDPTR:=MEM[CONDPTR].HH.RH;END;
IF HISTORY<>0 THEN IF((HISTORY=1)OR(INTERACTION<3))THEN IF SELECTOR=19
THEN BEGIN SELECTOR:=17;PRINTNL(1139);SELECTOR:=19;END;
IF C=1 THEN BEGIN STOREFMTFILE;GOTO 10;PRINTNL(1140);GOTO 10;END;10:END;
{:1335}{1336:}PROCEDURE INITPRIM;BEGIN NONEWCONTROL:=FALSE;{226:}
PRIMITIVE(245,74,2626);PRIMITIVE(246,74,2627);PRIMITIVE(247,74,2628);
PRIMITIVE(248,74,2629);PRIMITIVE(249,74,2630);PRIMITIVE(250,74,2631);
PRIMITIVE(251,74,2632);PRIMITIVE(252,74,2633);PRIMITIVE(253,74,2634);
PRIMITIVE(254,74,2635);PRIMITIVE(255,74,2636);PRIMITIVE(256,74,2637);
PRIMITIVE(257,74,2638);PRIMITIVE(258,74,2639);PRIMITIVE(259,74,2640);
PRIMITIVE(260,75,2641);PRIMITIVE(261,75,2642);PRIMITIVE(262,75,2643);
{:226}{230:}PRIMITIVE(267,71,3157);PRIMITIVE(268,71,3158);
PRIMITIVE(269,71,3159);PRIMITIVE(270,71,3160);PRIMITIVE(271,71,3161);
PRIMITIVE(272,71,3162);PRIMITIVE(273,71,3163);PRIMITIVE(274,71,3164);
PRIMITIVE(275,71,3165);{:230}{238:}PRIMITIVE(289,72,4367);
PRIMITIVE(290,72,4368);PRIMITIVE(291,72,4369);PRIMITIVE(292,72,4370);
PRIMITIVE(293,72,4371);PRIMITIVE(294,72,4372);PRIMITIVE(295,72,4373);
PRIMITIVE(296,72,4374);PRIMITIVE(297,72,4375);PRIMITIVE(298,72,4376);
PRIMITIVE(299,72,4377);PRIMITIVE(300,72,4378);PRIMITIVE(301,72,4379);
PRIMITIVE(302,72,4380);PRIMITIVE(303,72,4381);PRIMITIVE(304,72,4382);
PRIMITIVE(305,72,4383);PRIMITIVE(306,72,4384);PRIMITIVE(307,72,4385);
PRIMITIVE(308,72,4386);PRIMITIVE(309,72,4387);PRIMITIVE(310,72,4388);
PRIMITIVE(311,72,4389);PRIMITIVE(312,72,4390);PRIMITIVE(313,72,4391);
PRIMITIVE(314,72,4392);PRIMITIVE(315,72,4393);PRIMITIVE(316,72,4394);
PRIMITIVE(317,72,4395);PRIMITIVE(318,72,4396);PRIMITIVE(319,72,4397);
PRIMITIVE(320,72,4398);PRIMITIVE(321,72,4399);PRIMITIVE(322,72,4400);
PRIMITIVE(323,72,4401);PRIMITIVE(324,72,4402);PRIMITIVE(325,72,4403);
PRIMITIVE(326,72,4404);PRIMITIVE(327,72,4405);PRIMITIVE(328,72,4406);
PRIMITIVE(329,72,4407);PRIMITIVE(330,72,4408);PRIMITIVE(331,72,4409);
PRIMITIVE(332,72,4410);PRIMITIVE(333,72,4411);PRIMITIVE(334,72,4412);
PRIMITIVE(335,72,4413);PRIMITIVE(336,72,4414);PRIMITIVE(337,72,4415);
PRIMITIVE(338,72,4416);{:238}{248:}PRIMITIVE(342,73,4801);
PRIMITIVE(343,73,4802);PRIMITIVE(344,73,4803);PRIMITIVE(345,73,4804);
PRIMITIVE(346,73,4805);PRIMITIVE(347,73,4806);PRIMITIVE(348,73,4807);
PRIMITIVE(349,73,4808);PRIMITIVE(350,73,4809);PRIMITIVE(351,73,4810);
PRIMITIVE(352,73,4811);PRIMITIVE(353,73,4812);PRIMITIVE(354,73,4813);
PRIMITIVE(355,73,4814);PRIMITIVE(356,73,4815);PRIMITIVE(357,73,4816);
PRIMITIVE(358,73,4817);PRIMITIVE(359,73,4818);PRIMITIVE(360,73,4819);
PRIMITIVE(361,73,4820);{:248}{265:}PRIMITIVE(32,64,0);
PRIMITIVE(47,44,0);PRIMITIVE(371,45,0);PRIMITIVE(372,89,0);
PRIMITIVE(373,40,0);PRIMITIVE(374,41,0);PRIMITIVE(375,61,0);
PRIMITIVE(376,16,0);PRIMITIVE(367,106,0);PRIMITIVE(377,15,0);
PRIMITIVE(378,91,0);PRIMITIVE(368,66,0);PRIMITIVE(379,62,0);
HASH[2360].RH:=379;EQTB[2360]:=EQTB[CURVAL];PRIMITIVE(380,101,0);
PRIMITIVE(381,87,0);PRIMITIVE(382,76,0);PRIMITIVE(383,32,0);
PRIMITIVE(384,36,0);PRIMITIVE(385,39,0);PRIMITIVE(202,37,0);
PRIMITIVE(223,18,0);PRIMITIVE(386,46,0);PRIMITIVE(387,17,0);
PRIMITIVE(388,54,0);PRIMITIVE(389,90,0);PRIMITIVE(390,34,0);
PRIMITIVE(391,102,0);PRIMITIVE(207,55,0);PRIMITIVE(392,63,0);
PRIMITIVE(277,83,0);PRIMITIVE(393,42,0);PRIMITIVE(394,79,0);
PRIMITIVE(395,65,0);PRIMITIVE(396,95,0);PRIMITIVE(397,0,256);
HASH[2365].RH:=397;EQTB[2365]:=EQTB[CURVAL];PRIMITIVE(398,97,0);
PRIMITIVE(399,108,0);PRIMITIVE(276,70,0);PRIMITIVE(224,38,0);
PRIMITIVE(400,33,0);PRIMITIVE(401,56,0);PRIMITIVE(402,35,0);{:265}{334:}
PRIMITIVE(460,13,0);PARLOC:=CURVAL;PARTOKEN:=4096+PARLOC;{:334}{376:}
PRIMITIVE(494,103,0);PRIMITIVE(495,103,1);{:376}{384:}
PRIMITIVE(496,109,0);PRIMITIVE(497,109,1);PRIMITIVE(498,109,2);
PRIMITIVE(499,109,3);PRIMITIVE(500,109,4);{:384}{411:}
PRIMITIVE(340,88,0);PRIMITIVE(363,88,1);PRIMITIVE(264,88,2);
PRIMITIVE(265,88,3);{:411}{416:}PRIMITIVE(534,78,101);
PRIMITIVE(535,78,1);PRIMITIVE(536,81,0);PRIMITIVE(537,81,1);
PRIMITIVE(538,82,1);PRIMITIVE(539,82,3);PRIMITIVE(540,82,2);
PRIMITIVE(541,69,0);PRIMITIVE(542,69,1);PRIMITIVE(543,69,2);{:416}{468:}
PRIMITIVE(602,107,0);PRIMITIVE(603,107,1);PRIMITIVE(604,107,2);
PRIMITIVE(605,107,3);PRIMITIVE(606,107,4);PRIMITIVE(607,107,5);{:468}
{487:}PRIMITIVE(623,104,0);PRIMITIVE(624,104,1);PRIMITIVE(625,104,2);
PRIMITIVE(626,104,3);PRIMITIVE(627,104,4);PRIMITIVE(628,104,5);
PRIMITIVE(629,104,6);PRIMITIVE(630,104,7);PRIMITIVE(631,104,8);
PRIMITIVE(632,104,9);PRIMITIVE(633,104,10);PRIMITIVE(634,104,11);
PRIMITIVE(635,104,12);PRIMITIVE(636,104,13);PRIMITIVE(637,104,14);
PRIMITIVE(638,104,15);PRIMITIVE(639,104,16);{:487}{491:}
PRIMITIVE(640,105,2);HASH[2362].RH:=640;EQTB[2362]:=EQTB[CURVAL];
PRIMITIVE(641,105,4);PRIMITIVE(642,105,3);{:491}{553:}
PRIMITIVE(667,86,0);HASH[2368].RH:=667;EQTB[2368]:=EQTB[CURVAL];{:553}
{780:}PRIMITIVE(764,4,128);PRIMITIVE(765,5,129);HASH[2359].RH:=765;
EQTB[2359]:=EQTB[CURVAL];PRIMITIVE(766,5,130);HASH[2363].RH:=767;
HASH[2364].RH:=767;EQTB[2364].HH.B0:=9;EQTB[2364].HH.RH:=2989;
EQTB[2364].HH.B1:=1;EQTB[2363]:=EQTB[2364];EQTB[2363].HH.B0:=114;{:780}
{983:}PRIMITIVE(831,80,0);PRIMITIVE(832,80,1);PRIMITIVE(833,80,2);
PRIMITIVE(834,80,3);PRIMITIVE(835,80,4);PRIMITIVE(836,80,5);
PRIMITIVE(837,80,6);PRIMITIVE(838,80,7);{:983}{1052:}
PRIMITIVE(886,14,0);PRIMITIVE(887,14,1);{:1052}{1058:}
PRIMITIVE(888,26,4);PRIMITIVE(889,26,0);PRIMITIVE(890,26,1);
PRIMITIVE(891,26,2);PRIMITIVE(892,26,3);PRIMITIVE(893,27,4);
PRIMITIVE(894,27,0);PRIMITIVE(895,27,1);PRIMITIVE(896,27,2);
PRIMITIVE(897,27,3);PRIMITIVE(208,28,5);PRIMITIVE(212,29,1);
PRIMITIVE(214,30,99);{:1058}{1071:}PRIMITIVE(915,21,1);
PRIMITIVE(916,21,0);PRIMITIVE(917,22,1);PRIMITIVE(918,22,0);
PRIMITIVE(278,20,0);PRIMITIVE(919,20,1);PRIMITIVE(920,20,2);
PRIMITIVE(826,20,3);PRIMITIVE(921,20,4);PRIMITIVE(828,20,5);
PRIMITIVE(922,20,105);PRIMITIVE(923,31,99);PRIMITIVE(924,31,100);
PRIMITIVE(925,31,101);PRIMITIVE(926,31,102);{:1071}{1088:}
PRIMITIVE(941,43,1);PRIMITIVE(942,43,0);{:1088}{1107:}
PRIMITIVE(951,25,12);PRIMITIVE(952,25,11);PRIMITIVE(953,25,10);
PRIMITIVE(954,23,0);PRIMITIVE(955,23,1);PRIMITIVE(956,24,0);
PRIMITIVE(957,24,1);{:1107}{1114:}PRIMITIVE(45,47,1);
PRIMITIVE(221,47,0);{:1114}{1141:}PRIMITIVE(988,48,0);
PRIMITIVE(989,48,1);{:1141}{1156:}PRIMITIVE(732,50,16);
PRIMITIVE(733,50,17);PRIMITIVE(734,50,18);PRIMITIVE(735,50,19);
PRIMITIVE(736,50,20);PRIMITIVE(737,50,21);PRIMITIVE(738,50,22);
PRIMITIVE(739,50,23);PRIMITIVE(741,50,26);PRIMITIVE(740,50,27);
PRIMITIVE(990,51,0);PRIMITIVE(744,51,1);PRIMITIVE(745,51,2);{:1156}
{1169:}PRIMITIVE(727,53,0);PRIMITIVE(728,53,2);PRIMITIVE(729,53,4);
PRIMITIVE(730,53,6);{:1169}{1178:}PRIMITIVE(1008,52,0);
PRIMITIVE(1009,52,1);PRIMITIVE(1010,52,2);PRIMITIVE(1011,52,3);
PRIMITIVE(1012,52,4);PRIMITIVE(1013,52,5);{:1178}{1188:}
PRIMITIVE(742,49,30);PRIMITIVE(743,49,31);HASH[2361].RH:=743;
EQTB[2361]:=EQTB[CURVAL];{:1188}{1208:}PRIMITIVE(1032,92,1);
PRIMITIVE(1033,92,2);PRIMITIVE(1034,92,4);PRIMITIVE(1035,96,0);
PRIMITIVE(1036,96,1);PRIMITIVE(1037,96,2);PRIMITIVE(1038,96,3);{:1208}
{1219:}PRIMITIVE(1052,93,0);PRIMITIVE(1053,93,1);{:1219}{1222:}
PRIMITIVE(1054,94,0);PRIMITIVE(1055,94,1);PRIMITIVE(1056,94,2);
PRIMITIVE(1057,94,3);PRIMITIVE(1058,94,4);PRIMITIVE(1059,94,5);
PRIMITIVE(1060,94,6);{:1222}{1230:}PRIMITIVE(284,84,3727);
PRIMITIVE(288,84,4239);PRIMITIVE(285,84,3855);PRIMITIVE(286,84,3983);
PRIMITIVE(287,84,4111);PRIMITIVE(341,84,4673);PRIMITIVE(281,85,3679);
PRIMITIVE(282,85,3695);PRIMITIVE(283,85,3711);{:1230}{1250:}
PRIMITIVE(806,98,0);PRIMITIVE(816,98,1);{:1250}{1254:}
PRIMITIVE(1076,77,0);PRIMITIVE(1077,77,1);{:1254}{1262:}
PRIMITIVE(146,99,0);PRIMITIVE(147,99,1);PRIMITIVE(148,99,2);
PRIMITIVE(1086,99,3);{:1262}{1272:}PRIMITIVE(1087,60,1);
PRIMITIVE(1088,60,0);{:1272}{1277:}PRIMITIVE(1089,58,0);
PRIMITIVE(1090,58,1);{:1277}{1286:}PRIMITIVE(1096,57,3855);
PRIMITIVE(1097,57,3983);{:1286}{1291:}PRIMITIVE(1098,19,0);
PRIMITIVE(1099,19,1);PRIMITIVE(1100,19,2);PRIMITIVE(1101,19,3);{:1291}
{1344:}PRIMITIVE(1142,59,0);PRIMITIVE(458,59,1);WRITELOC:=CURVAL;
PRIMITIVE(1143,59,2);PRIMITIVE(1144,59,3);PRIMITIVE(1145,59,4);{:1344};
NONEWCONTROL:=TRUE;END;{:1336}{1338:}PROCEDURE DEBUGHELP;LABEL 888,10;
VAR K,L,M,N:INTEGER;BEGIN WHILE TRUE DO BEGIN BEGIN IF INSKP0 THEN END;
PRINTNL(1141);BREAK(TTY);READ(TTY,M);
IF M<0 THEN GOTO 10 ELSE IF M=0 THEN BEGIN GOTO 888;
888:M:=0;{'BREAKPOINT'}
END ELSE BEGIN READ(TTY,N);CASE M OF{1339:}1:PRINTWORD(MEM[N]);
2:PRINTINT(MEM[N].HH.LH);3:PRINTINT(MEM[N].HH.RH);4:PRINTWORD(EQTB[N]);
5:PRINTWORD(FONTINFO[N]);6:PRINTWORD(SAVESTACK[N]);7:SHOWBOX(N);
8:BEGIN BREADTHMAX:=10000;DEPTHTHRESHO:=POOLSIZE-POOLPTR-10;
SHOWNODELIST(N);END;9:SHOWTOKENLIS(N,0,1000);10:PRINT(N);
11:CHECKMEM(N>0);12:SEARCHMEM(N);13:BEGIN READ(TTY,L);PRINTCMDCHR(N,L);
END;14:FOR K:=0 TO N DO PRINT(BUFFER[K]);15:BEGIN FONTINSHORTD:=0;
SHORTDISPLAY(N);END;16:PANICKING:=NOT PANICKING;{:1339}
OTHERS:PRINT(63)END;END;END;10:END;{:1338}{:1330}{1332:}
BEGIN HISTORY:=3;;IF READYALREADY=314159 THEN GOTO 1;{14:}BAD:=0;
IF(HALFERRORLIN<30)OR(HALFERRORLIN>ERRORLINE-15)THEN BAD:=1;
IF MAXPRINTLINE<60 THEN BAD:=2;IF DVIBUFSIZE MOD 8<>0 THEN BAD:=3;
IF 1101>3000 THEN BAD:=4;IF 1777>2100 THEN BAD:=5;
IF MAXINOPEN>=128 THEN BAD:=6;{:14}{111:}
IF(MEMMIN<>1)OR(MEMMAX<>3000)THEN BAD:=10;
IF(MEMMIN>1)OR(MEMMAX<3000)THEN BAD:=10;IF(0>0)OR(255<127)THEN BAD:=11;
IF(0>0)OR(32768<32767)THEN BAD:=12;IF(0<0)OR(255>32768)THEN BAD:=13;
IF(MEMMIN<0)OR(MEMMAX>=32768)OR(1-MEMMIN>32769)THEN BAD:=14;
IF(0<0)OR(FONTMAX>255)THEN BAD:=15;IF FONTMAX>256 THEN BAD:=16;
IF(SAVESIZE>32768)OR(MAXSTRINGS>32768)THEN BAD:=17;
IF BUFSIZE>32768 THEN BAD:=18;IF 255<255 THEN BAD:=19;{:111}{290:}
IF 6721>32768 THEN BAD:=21;{:290}{522:}IF 18>FILENAMESIZE THEN BAD:=31;
{:522}{1249:}IF 2*32768<3000-MEMMIN THEN BAD:=41;{:1249}
IF BAD>0 THEN BEGIN WRITELN(TTY,
'Ouch---my internal constants have been clobbered!','---case ',BAD:1);
GOTO 9999;END;INITIALIZE;IF NOT GETSTRINGSST THEN GOTO 9999;INITPRIM;
READYALREADY:=314159;1:{55:}SELECTOR:=17;TALLY:=0;TERMOFFSET:=0;
FILEOFFSET:=0;{:55}{61:}WRITE(TTY,'This is TeX, Version 2.2');
IF FORMATIDENT=0 THEN WRITELN(TTY,' (no format preloaded)')ELSE BEGIN
PRINT(FORMATIDENT);PRINTLN;END;BREAK(TTY);{:61}{528:}JOBNAME:=0;
NAMEINPROGRE:=FALSE;{:528}{533:}OUTPUTFILENA:=0;{:533};{1337:}
BEGIN{331:}BEGIN INPUTPTR:=0;MAXINSTACK:=0;INOPEN:=0;MAXBUFSTACK:=0;
PARAMPTR:=0;MAXPARAMSTAC:=0;FIRST:=BUFSIZE;REPEAT BUFFER[FIRST]:=0;
FIRST:=FIRST-1;UNTIL FIRST=0;SCANNERSTATU:=0;WARNINGINDEX:=0;FIRST:=1;
CURINPUT.STATEFIELD:=33;CURINPUT.STARTFIELD:=1;CURINPUT.INDEXFIELD:=0;
LINE:=0;CURINPUT.NAMEFIELD:=0;FORCEEOF:=FALSE;ALIGNSTATE:=1000000;
IF NOT INITTERMINAL THEN GOTO 9999;CURINPUT.LIMITFIELD:=LAST;
FIRST:=LAST+1;END{:331};
IF(FORMATIDENT=0)OR(BUFFER[CURINPUT.LOCFIELD]=38)THEN BEGIN IF
FORMATIDENT<>0 THEN INITIALIZE;IF NOT OPENFMTFILE THEN GOTO 9999;
IF NOT LOADFMTFILE THEN BEGIN WCLOSE(FMTFILE);GOTO 9999;END;
WCLOSE(FMTFILE);
WHILE(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(BUFFER[CURINPUT.LOCFIELD
]=32)DO CURINPUT.LOCFIELD:=CURINPUT.LOCFIELD+1;END;
IF(EQTB[4415].INT<0)OR(EQTB[4415].INT>127)THEN CURINPUT.LIMITFIELD:=
CURINPUT.LIMITFIELD-1 ELSE BUFFER[CURINPUT.LIMITFIELD]:=EQTB[4415].INT;
FIXDATEANDTI;{765:}MAGICOFFSET:=STRSTART[758]-9*16{:765};{75:}
IF INTERACTION=0 THEN SELECTOR:=16 ELSE SELECTOR:=17{:75};
IF(CURINPUT.LOCFIELD<CURINPUT.LIMITFIELD)AND(EQTB[3727+BUFFER[CURINPUT.
LOCFIELD]].HH.RH<>0)THEN STARTINPUT;END{:1337};INITSTRPTR:=STRPTR;
INITPOOLPTR:=POOLPTR;HISTORY:=0;MAINCONTROL;FINALCLEANUP;
9998:CLOSEFILESAN;9999:READYALREADY:=0;END.{:1332}